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