逻辑运算符:&& || !
1.&& 逻辑与 使用场景:至少两个以上的表达式
两种情况:
表达式1 && 表达式2
1、当 表达式1的布尔结果为true 时 返回 表达式2的值(执行表达式2) 如果后续包含多个表达式依次按照此规则执行
总结: 当前一个表达式的布尔结果为true 则 执行返回后一个表达式的结果
2、当 表达式1的布尔结果为false 直接返回表达式1的值
总结: 当前一个表达式的布尔结果为false 则 直接返回当前表达式的结果
console.log(10 > 20 && 5);
//值表达式的布尔类型:除 undefined null '' false 0 以外的都是true
console.log("张三" && "王五"); //王五
console.log(0 && "王二小");
const count = 50;
console.log(count > 10 && "张三" && "李四" && "王五");
//场景操作 函数存储的情况下 再执行函数
//执行一个函数
let fn = () => {
console.log("FN是一个函数");
};
//代码阻断
fn && fn();
//场景操作 赋值操作
const state = 0;
if (state == 0) {
stateStr = "已完成";
}
stateStr = state == 0 && "已完成";
2.|| 逻辑或 使用场景:至少两个以上的表达式
两种情况:
表达式1 || 表达式2
1、当前一个表达式的布尔结果为 tue 直接返回该表达式的值
2、当前一个表达式的布尔结果为false 则 执行后一个表达式且返回该表达式的值
console.log(10 > 20 || "张三"); //张三
console.log(5 + 10 || "王五"); // 15
console.log(0 || "王五"); //王五
var stateS = 2;
if (stateS == 0 || stateS == 1 || stateS == 2) {
console.log("已完成");
}
const hrefTitle = ""; //模拟地址栏标题
document.title = hrefTitle || "首页";
3.! 逻辑非
1、逻辑非 取反
2、逻辑非 取反后 返回布尔类型
3、逻辑非 取反后 返回true 则 返回false
4、逻辑非 取反后 返回false 则 返回true
console.log(!true); //false
console.log(!false); //true
console.log(!10); //false
console.log(!0); //true
总结: && 遇true 则执行
|| 遇false 则执行
! 取反