我今天在Javascript中玩数组并注意到这个小宝石:
alert([1, 2, 3] == [1, 2, 3]); //alerts false
Run Code Online (Sandbox Code Playgroud)
令我感到奇怪的是阵列不等于它自己.
但后来我注意到了这一点,甚至更奇怪了:
alert([1, 2, 3] == "1,2,3"); //alerts true
Run Code Online (Sandbox Code Playgroud)
?!?!?!?!?
世界上为什么[1, 2, 3]不是==自己而是==弦乐?
我认识到,==是不一样的===.即便如此,邪恶可能会导致Javascript先生做出如此奇怪的事情?
以下是在Firebug中完成的:
>>> [1, 2] == [1, 2]
false
>>> ({a : 1}) == ({a : 1})
false
Run Code Online (Sandbox Code Playgroud)
我认为Javscript有一些规则说,如果一个Object或Array对相同的元素具有相同的引用,那么它们是相等的吗?
但即使我说
>>> foo = {a : 1}
Object { a=1}
>>> [foo] == [foo]
false
>>> ({a: foo}) == ({a: foo})
false
Run Code Online (Sandbox Code Playgroud)
有没有办法使它能够进行元素比较并返回true?
javascript ×3