布尔运算符

  1. ToBoolean抽象操作:参考资料
    总结:
    1. 原始类型的ToBoolean结果:
      1. undefined,null : false
      2. Boolean : 输出本身
      3. Number : +0,-0,NaN为false ; 其余为 true
      4. String : 空字符串为false ; 其余为 true
    2. 复合类型(一般对象/数组/函数)ToBoolean 结果: 一律为true.(注意:new Boolean(false)为复合类型,对其进行ToBoolean操作,结果为true)
      简记: undefined,null,false,空串,0,NaN为false ; 其余一律为true.
  2. 逻辑非(!)
    语法: ! 表达式x
    求值过程:
    • 计算表达式x的值px
    • 令r为ToBoolean(px)的结果
    • 对r取反,即为最终结果
  3. 逻辑与(&&)
    语法: x && y
    求值过程:
    • 计算表达式x的值px
    • 令r=ToBoolean(px)
    • 如果r为false,返回px;否则返回表达式y的值py.
      (注意:返回的是px与py,不是他们ToBoolean之后的布尔值)
  4. 逻辑或(||): 同逻辑与返回结果值时的条件相反
    语法: x || y
    求值过程:
    • 计算表达式x的值px
    • 令r=ToBoolean(px)
    • 如果r为true,返回px;否则返回表达式y的值py.
      (注意:返回的是px与py,不是他们ToBoolean之后的布尔值)
  5. 条件运算符(? : )
    语法: x ? y : z
    求值过程:
    • 计算表达式x的值px
    • 令r=ToBoolean(px)
    • 如果r为true,返回表达式y的值py;否则返回表达式z的值pz.
      (注意:返回的是px,py,pz,不是他们ToBoolean之后的布尔值)
原文地址:https://www.cnblogs.com/peterzhangsnail/p/12521660.html