【发布时间】:2015-02-15 21:26:49
【问题描述】:
我正在了解== 与=== 的对比,并遇到了这个answer,这对理解这个概念很有帮助。但是我想知道其中一个例子:
'0' == false // true
这可能是有道理的,因为== 不检查类型。但后来我在控制台中尝试了一些可能的强制,发现如下:
Boolean('0') // true
String(false) // "false"
我原以为'0' == false 与'0' === String(false) 具有相同的真值,但事实并非如此。
那么强制实际上是如何工作的呢?我缺少更基本的类型吗?
【问题讨论】:
-
String(false) 正在返回 false 的字符串表示,而 Boolean('0') 正在将字符串 '0' 转换为 true(因为非空字符串是真实的)
-
您可以在此处找到所有问题的答案:ecma-international.org/ecma-262/5.1 一开始有点难读,但如果您花一些时间阅读,您会受益匪浅。
标签: javascript equality coercion