逻辑运算符 - JavaScript 基础

  1. 逻辑或
    1. 逻辑或技巧
  2. 逻辑与
  3. 逻辑非
  4. 练习

逻辑或

** 寻找第一个真值 **

逻辑或处理每一个逻辑或连接的操作数时,会将其转化为布尔值。如果有值为 true,就停止后面的处理,直接返回这个操作数原值(非转化后的布尔值)。
当所有操作数都是 false,则返回最后一个操作数。

let res = 0 || NaN || undefined || null; => null

逻辑或技巧

  1. 获取多个值中的第一个真值
    let firstName = "";
    let lastName = "";
    let nickName = "SuperCoder";
    alert(firstName || lastName || nickName || "Anonymous"); // SuperCoder
  2. 短路求值
    如果操作数不仅仅是一个值,而是一个有副作用的表达式,例如变量赋值或函数调用,那么这
    一特性的重要性就变得显而易见了。

逻辑与

** 寻找第一个假值 **

逻辑与处理每一个逻辑与连接的操作数时,会将其转化为布尔值。如果有值为 false,就停止后面的处理,直接返回这个操作数原值(非转化后的布尔值)。
当所有操作数都是 true,则返回最后一个操作数。

逻辑与 && 优先级高于逻辑或 ||
a && b || c && d 等价与 (a && b) || (c && d)

逻辑非

运作方式:

  1. 将操作数转化为布尔值
  2. 返回相反的布尔值

利用这个特性。可以使用两个连着的逻辑非实现将某个值转化为布尔值:

!!null => false
!!"0" => true

逻辑非优先级高于逻辑与 && 和逻辑或 ||

练习

null || -1 && 1 
null || 2 && 3 || 4
alert(alert(1) || 2 || alert(3));
alert(alert(1) && alert(2));

答案:


null || -1 && 1  => 1,优先级问题,先计算 - 1 && 1, 结果再参与或运算
null || 2 && 3 || 4 => 3,优先级问题,先计算 2 && 3,表达式变为 null || 3 || 4
alert(alert(1) || 2 || alert(3)); => 先 1,后 2
alert(alert(1) && alert(2)); => 先 1,后 undefined。调用 alert 返回了 undefined

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间