在javascript中,String(true) == "true"
的计算结果为true,而Boolean("true") == true
的计算结果为true,那么为什么"true" == true
的计算结果为false?
答案 0 :(得分:5)
在"true" == true
中强制是数字。所以这就变成了:
NaN == 1
...这是false
。
答案 1 :(得分:1)
查看MDN(Mozilla开发者网络)。当我们比较不同类型的两个操作数时, [抽象等式比较算法]将尝试在进行比较之前将它们转换为相同的类型。
最后,答案如下:
如果其中一个操作数是布尔值,则布尔操作数如果为真则转换为1,如果为假则转换为+0。
然后
比较数字和字符串时,字符串将转换为数字值。 JavaScript尝试将字符串数字文字转换为数字类型值。首先,从字符串数字文字中导出数学值。接下来,该值四舍五入为最接近的数字类型值。
所以,最后,我们比较Nan == 1
,false
正如@trincot指出的那样。