在Javascript中解释为什么'[] == 0’输出’true’?

前端之家收集整理的这篇文章主要介绍了在Javascript中解释为什么'[] == 0’输出’true’?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Why does ++[[]][+[]]+[+[]] return the string “10”?8个
解释为什么[] == 0在Javascript中输出’true’?

请检查示例.

+[] == 0 ? alert(true) : alert(false);

并检查.
‘1 [[]]’输出’10’

解决方法

它将如下评估,

1:[] == 0 – > “”== 0

运算符的数量highest priority而非==因此将首先进行评估.因此,在将数组转换为数字时,将通过将其作为参数传递来调用ToPrimitive()函数.由于[]是一个对象,它将返回“”字符串

2:“”== 0 – > 0 == 0

一个空字符串将被转换为0.并且非空字符串将被转换为NaN,我们都知道.

3:0 == 0 – >真正

最后根据abstract equality comparison algorithm,当两个相同类型的操作数进行比较时,不会进行进一步的评估,它将直接检查其相等性并返回结果.

在你的第二个案例1 [[]]中,评估会发生,如,

1:1 [[]] – ([]将首先转换为原始,因为[]它是一个对象)

2:1 [“”](toPrimitive([])将是“”)

3:1 [0](将空字符串转换为数字时将产生0)

4:1“0”(toPrimitive([0])将为“0”)

5:“10”

原文链接:https://www.f2er.com/js/155929.html

猜你在找的JavaScript相关文章