1、比较的两者都是boolean
2、比较的两者是其他类型
总结:逻辑与(&&)和逻辑非(||),当运算到某一个变量就得出最终结果之后,就返回哪个变量。
比较的两者都是boolean
//逻辑与
console.log( true && true ); //true
console.log( true && false ); //false
console.log( false && true ); //false
console.log( false && false ); //false
//逻辑或
console.log( true || true ); //true
console.log( true || false ); //true
console.log( false || true ); //true
console.log( false || false ); //false
总结:
- 逻辑与,两者都为true,结果才是true。
- 逻辑或,只要有一者为true,结果就是true。
这里说一个概念 - 短路:
逻辑与:当前者的值为false的时候,其实就不执行后者;因为结果已经是false
逻辑或:当前者的值为true的时候,其实就不执行后者;因为结果已经是true
简单示例:
//逻辑与
console.log( true && alert("halo1") ); //会弹出提示框
console.log( false && alert("halo2") ); //不会弹出提示框
//逻辑或
console.log( true || alert("halo3") ); //不会弹出提示框
console.log( false || alert("halo4") ); //会弹出提示框
比较的两者是其他类型
以下内容会被当成false处理:"" , false , 0 , null , undefined , NaN
//逻辑与
console.log("name" && "age"); //"age"
console.log(false && "name"); //false
//逻辑或
console.log("name" || "age"); //"name"
console.log(true || "age"); //true
通用的总结:
a && b,当a为true的时候,这时候需要判断b是否为true,所以不管b是true是false,都返回b;
当a为false的时候,无论b是true是false结果都是false,所以返回a;a || b,当a为true的时候,无论b是true是false结果都是true,所以返回a;
当a为false的时候,时候需要判断b是否为true,所以不管b是true是false,都返回b;