对于数组(array == 0)为真,对于非空数组(array == 0)为false为什么?

时间:2017-07-14 23:39:29

标签: javascript

let x = [];
if(x==0) 
    console.log('Hello')

关于代码打印' Hello'

let x = [ 1 ];
if(x==0) 
    console.log('Hello');

以上代码不会打印“你好”。

为什么?

1 个答案:

答案 0 :(得分:1)

虽然我认为这应该作为this question的副本关闭,但在做出更多虚假陈述之前:

==执行类型转换。这是根据Abstract Equality Comparison Algorithm

进行的类型转换
[] == 0                    // step 9 ToPrimitve([]) == 0
"" == 0                    // step 5 ToNumber("") == 0
0 == 0                     // step 1.c.iii

[1] == 0                   // step 9 ToPrimitve([1]) == 0
"1" == 0                   // step 5 ToNumber("1") == 0
1 == 0                     // step 1.c.iii

参考文献:ToNumberToPrimitive