只有三种逻辑运算符:

  • &&

  • ||

  • !

注意:

  • &&|| 都有短路的效果

一. ! 逻辑非

  • 逻辑非的运算逻辑是,不管什么类型,先转换成Boolean值,再取反得到最终的结果。

  • 取反的意思就是truefalsefalsetrue

  • 他的运算结果总是布尔值.

console.log(!true);
console.log(!false);
console.log(!null);
console.log(!undefined);
console.log(!1);
console.log(!0);
console.log(!"abc");


二. && 短路与

  • 只要有一个是false, 结果就是false.

  • 只有当两个都是true的时候结果才是true.

  • 短路性: 如果第一个是false, 则不会再计算第二个.


三. || 短路或

  • 只要有一个是true, 结果就是true

  • 只有当两个都是true的时候结果才是true

  • 短路性: 如果第一个是true, 则不会再计算第二个.


四. js中&&和||的牛逼之处

在其他很多语言中, &&||只能对布尔值进行计算

但是在js中, 任何类型的数据都会参与运算, 得到的结果也可以是任意的类型.

如果有不是布尔值参与了运算, 则会根据前面讲的规则,把它当成truefalse来用.

最终结果的规则:

如果第一个能决定最终的结果, 则结果就是第一个的值, 否则就是第二个.

console.log(100 && 0); // 100 可以当true来用, 所以不能决定最终结果  最终结果是 0
console.log(NaN && 0); // NaN 可以当false来用, 所以能决定最终结果  最终结果是 NaN
console.log("" && true); // "" 可以当false来用, 所以能决定最终结果  最终结果是 ""
console.log("" || true); // "" 可以当false来用, 所以不能决定最终结果  最终结果是 true
console.log(null || "abc"); // null可以当false来用, 所以不能决定最终结果  最终结果是 abc

Copyright © 李振超 2018 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-10-18 03:19:29

results matching ""

    No results matching ""