【问题标题】:For an array (array == 0) is true and for a non-empty array (array == 0) is false why? [duplicate]对于数组 (array == 0) 为真,对于非空数组 (array == 0) 为假,为什么? [复制]
【发布时间】:2017-12-20 03:28:29
【问题描述】:
let x = [];
if(x==0) 
    console.log('Hello')

about 代码打印 'Hello'

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

上面的代码没有打印'Hello'。

为什么?

【问题讨论】:

标签: javascript


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2018-03-14
    • 2015-12-21
    • 2010-10-12
    相关资源
    最近更新 更多