javascript – 为什么`[] == false`为真,但只有`[]`的计算结果为真?

前端之家收集整理的这篇文章主要介绍了javascript – 为什么`[] == false`为真,但只有`[]`的计算结果为真?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Why if([]) is validated while [] == false in javascript?3个
以下打印’A’是预期的,因为数据类型不同,因此数组被哄骗为原始形式,对于空数组是假的.
if ([] == false)
    console.log('A');
else
    console.log('B');

但是为什么以下代码也打印’A’?

if ([])
    console.log('A');
else
    console.log('B');

解决方法

Why is [] == false is true

因为与原始值相比,数组的行为很奇怪.

特别是,当您将compare任何非布尔值设置为布尔值时,布尔值将作为数字处理.然后,当您将一个数字与一个对象进行比较时,该对象为converted to a primitive – 该数组之前的stringifies再次将其与该数字进行比较.现在,那个字符串is converted to a number使它们可以比较:

[] == false
[] == 0
"" == 0
0 == 0

同样,你可以试试

[1] == true
[1] == 1
"1" == 1
1 == 1

要么

[2] == true
[2] == 1
"2" == 1
2 == 1

but just [] evaluates to true?

因为any object is truthy.

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

猜你在找的JavaScript相关文章