2012-05-31 73 views
1

是否有理由說這些陳述爲什麼評價爲真?在JavaScript中,爲什麼num == [num]?

0 == [0]; 
1 == [1]; 
5 == [5]; 
5000 == [5000]; 
1000000 == [1000000]; 

所以基本上任何數字都等於自己包裹在一個數組中?這背後的邏輯是什麼?

回答

6

這是因爲non-strict equality operator在這種情況下,強制將兩個操作數爲字符串,數組的字符串表示是它包含的元素,用逗號分隔:

>>> [1, 5].toString() 
"1,5" 

由於你的問題陣列只包含一個元件,它們的字符串表示相同的元件的:

這背後
>>> [5000].toString() 
"5000" 
+0

謝謝。這是有道理的 – Ayyoudy

0

的一個原因是用於操作者是「==」,其比較僅值,而不是數據類型進行比較,如1 ==「1」是真的。

1

[0]是一個元素爲「0」的數組。所以0 == [0]將等同於:

0 == myArray(0)在另一種語言。其中myArray(0) returns the value at the index 0,在這種情況下將是0.

這是我對JavaScript數組的理解。如果我錯了,其他人可能想跳進來糾正我。

1

因爲==不比較變量的類型,===也比較變量的類型,所以:

0 == [0] //true 
0 === [0] // false 

在同一案件中:

0 == '0' //true 
0 === '0' //false 
相關問題