在JavaScript中,为什么num == [num]?

时间:2012-05-31 09:07:17

标签: javascript numbers

为什么这些陈述评估为真,是否有理由?

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

所以基本上任何数字都等于自己包含在一个数组中?这背后的逻辑是什么?

4 个答案:

答案 0 :(得分:6)

那是因为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数组的理解。如果我错了,别人可能会想要进入并纠正我。

答案 2 :(得分:1)

因为==不比较变量的类型,而且===确实比较变量的类型,所以:

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

在同样的情况下:

0 == '0'  //true
0 === '0' //false

答案 3 :(得分:0)

这背后的一个原因是使用的运算符是“==”,它只比较值而不是数据类型,如1 ==“1”为真。