[0]在JavaScript为什么OBJ [-0]不等于OBJ - 在JavaScript
var obj = {
'34': 'I am 34',
'-777': 'I am -777',
'0': 'I am 0'
}
obj[34] // 'I am 34'
obj[-777] // 'I am -777'
obj[0] // 'I am 0'
似乎obj[number]
等于obj[number.toString()]
。不过说到不同与-0
和+0
:
var obj = {
'-0': '-0 here',
'+0': '+0 here'
}
obj[+0]; // undefined
obj['+0']; // '-0 here'
obj['0'] = 'just 0';
obj[+0]; // 'just 0'
obj[-0]; // 'just 0'
为什么?
我会假设这是因为'-0'和'+ 0'首先被编译,所以实际传递的是'-1 * 0'(它是0)和'+ 1 * 0'(同样为0)的结果。 – Jhecht
你试过'(-0).toString()'和'(+0).toString()'吗? – Bergi
@Bergi哦,谢谢你,我没有注意到这一点。 – codefalling