微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐