【发布时间】:2019-12-07 01:05:59
【问题描述】:
我对 Javascript 还很陌生,我想知道为什么 '1' == true 返回 true 而 '2' == true 返回 false。来自Java背景,Javascript中的类型强制一直很难掌握
【问题讨论】:
-
习惯于始终使用
===来实现严格相等
标签: javascript
我对 Javascript 还很陌生,我想知道为什么 '1' == true 返回 true 而 '2' == true 返回 false。来自Java背景,Javascript中的类型强制一直很难掌握
【问题讨论】:
=== 来实现严格相等
标签: javascript
我的回答基于this table。
在您的示例中,操作数 A 是字符串,操作数 B 是布尔值。然后它对它们都调用 ToNumber 并比较它们是否严格 (===) 相等。
ToNumber('2') === 2,但是ToNumber(true) === 1,所以两者不相等。
更深入的实现解释是here。
【讨论】:
基本上归结为 Javascript 中的真值和假值。
因为你的比较是用 == 完成的,这基本上意味着只是价值比较。
在 Javascript 中,true 等于 1,就像 false 等于 0 一样。此外,鉴于你使用 == 而不是 ===,它与 1 == '1' 但 1 !== '1' 相同。
【讨论】: