【发布时间】:2012-06-14 12:40:01
【问题描述】:
我在控制台中有这个输出:
console.log((!undefined)==(!false)) // true (fine)
console.log((!!undefined)==(!!false)) // true (still fine)
据我所知,!!x==x,不是吗?
console.log((undefined)==(false)) // false
谁能告诉我为什么返回 false?
!!false==false 和 !!undefined==undefined 不是真的吗?
【问题讨论】:
-
虚假的
undefined值在用于!等逻辑运算符时被强制转换为false:11heavens.com/falsy-and-truthy-in-javascript -
对此有任何参考(官方)吗?
-
logical not operator 当然
!undefined是true。 -
参见 ECMAScript 标准的 logical NOT operator,它调用了 toBoolean。
toBoolean是真假魔术发生的地方,在标准中列为明确的案例。
标签: javascript comparison logic comparison-operators