为什么这些陈述评估为真,是否有理由?
0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];
所以基本上任何数字都等于自己包含在一个数组中?这背后的逻辑是什么?
答案 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”为真。