【问题标题】:why is [ ]==0 in java script? [duplicate]为什么 [ ]==0 在 java 脚本中? [复制]
【发布时间】:2018-04-02 05:50:40
【问题描述】:
Code:   
a=[1,2];   
b=[];

if(b==0){    
    console.log('0')    
}  
if(a==2){   
    console.log('2')  
}  
if([]==0){  
console.log('3')  
}  

Output:  
0  
3

如果 [ ] 被视为长度为 0 的数组并且 == 将 [ ] 与其长度进行比较。为什么 [1,2]==2 为假?

【问题讨论】:

  • [] == 0 == false == '' - 了解松散比较。另请阅读===

标签: javascript


【解决方案1】:

不是比较数组的长度,而是调用对象的valueOf函数,(我认为)与arr.join('')相同。

console.log(String([].valueOf()) === '');
console.log(String([1, 2].valueOf()) === '1,2');

第一个结果是'',大致等于0

第二个结果是'1,2'

【讨论】:

    【解决方案2】:

    == 会在进行比较之前进行一些对话

       
    console.log([] == false) // true
    console.log(0  == false) // true 
    console.log([] == 0)     // true

    我也建议你阅读this question and its answers

    【讨论】:

      猜你喜欢
      • 2018-09-26
      • 2015-05-29
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2019-03-19
      • 2012-08-09
      相关资源
      最近更新 更多