首頁  >  問答  >  主體

javascript - 【快速判斷數組為空】[]==false 為什麼回傳true?

console.log([]==false); //输出为true

console.log(['1']==false);//输出为false

可見,這可以很快速判斷陣列是否為空,但是原理上有些疑惑。
已知:

1.相等運算子"==":先轉換再比較。如果有一個操作數是布林值,則在比較相等性之前將其轉換為數值false轉換為0,true轉換為1。

2.如果一個運算元是對象,另一個運算元不是,則呼叫對象的valueOf()方法,用得到的基本型別值轉換。

所以[]==fasle的右邊會被轉換成0。那左邊呢?是怎麼轉換的呢?

習慣沉默習慣沉默2662 天前1245

全部回覆(6)我來回復

  • 黄舟

    黄舟2017-07-05 10:53:52

    這個送給你,javascript 的比較表:Relational and Equality Operators

    回覆
    0
  • typecho

    typecho2017-07-05 10:53:52

    http://tech.youzan.com/javasc...
    看完你會懂的

    回覆
    0
  • 大家讲道理

    大家讲道理2017-07-05 10:53:52

    因為他們都會轉換成布林值來比較,
    []==false
    =>
    true == false   //false

    回覆
    0
  • 怪我咯

    怪我咯2017-07-05 10:53:52

    先轉為數字0,然後再對比吧。

    回覆
    0
  • 世界只因有你

    世界只因有你2017-07-05 10:53:52

    講道理判斷數組為空用這個是不行的吧!

    if([]){
        alert('1111');
    }

    我以為它不會彈,結果還是彈了。大多數情況還是length來判斷。當然length判斷元素個數的時候也是坑!

    回覆
    0
  • 滿天的星座

    滿天的星座2017-07-05 10:53:52

    只能說js的內部機制是空數組就是false所以false==false成立啊!那非空數組自然轉換成true了true==false就不成立啊!有啥難理解的嗎?

    回覆
    0
  • 取消回覆