是否有理由說這些陳述爲什麼評價爲真?在JavaScript中,爲什麼num == [num]?
0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];
所以基本上任何數字都等於自己包裹在一個數組中?這背後的邏輯是什麼?
是否有理由說這些陳述爲什麼評價爲真?在JavaScript中,爲什麼num == [num]?
0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];
所以基本上任何數字都等於自己包裹在一個數組中?這背後的邏輯是什麼?
這是因爲non-strict equality operator在這種情況下,強制將兩個操作數爲字符串,數組的字符串表示是它包含的元素,用逗號分隔:
>>> [1, 5].toString()
"1,5"
由於你的問題陣列只包含一個元件,它們的字符串表示相同的元件的:
這背後>>> [5000].toString()
"5000"
的一個原因是用於操作者是「==」,其比較僅值,而不是數據類型進行比較,如1 ==「1」是真的。
[0]
是一個元素爲「0」的數組。所以0 == [0]
將等同於:
0 == myArray(0)
在另一種語言。其中myArray(0) returns the value at the index 0
,在這種情況下將是0.
這是我對JavaScript數組的理解。如果我錯了,其他人可能想跳進來糾正我。
因爲==不比較變量的類型,===也比較變量的類型,所以:
0 == [0] //true
0 === [0] // false
在同一案件中:
0 == '0' //true
0 === '0' //false
謝謝。這是有道理的 – Ayyoudy