在javascript中,为什么字符串" true",在强制之后,仍然不等于布尔值true?

时间:2017-07-03 19:56:12

标签: javascript types casting

在javascript中,String(true) == "true"的计算结果为true,而Boolean("true") == true的计算结果为true,那么为什么"true" == true的计算结果为false?

enter image description here

2 个答案:

答案 0 :(得分:5)

"true" == true中强制是数字。所以这就变成了:

NaN == 1

...这是false

loose equality operands table on mozilla.org可能对我们有用。

答案 1 :(得分:1)

查看MDN(Mozilla开发者网络)。当我们比较不同类型的两个操作数时, [抽象等式比较算法]将尝试在进行比较之前将它们转换为相同的类型

最后,答案如下:

  

如果其中一个操作数是布尔值,则布尔操作数如果为真则转换为1,如果为假则转换为+0。

然后

  

比较数字和字符串时,字符串将转换为数字值。 JavaScript尝试将字符串数字文字转换为数字类型值。首先,从字符串数字文字中导出数学值。接下来,该值四舍五入为最接近的数字类型值。

所以,最后,我们比较Nan == 1false正如@trincot指出的那样。