如果我在 chrome 控制台上执行下面的代码,我得到的答案是关联数组:
var arr= [];
var i = 1;
for(var j = 1; j < 3; j++)
arr[j]=j;console.log(arr);
答案:[1:1, 2:2]
但是当我使用 Node 执行时:[ , 1, 2 ]
为什么会有这么大的差异?据我所知,两者都在使用 v8。
最佳答案
Firefox 说
Array [ <1 empty slot>, 1, 2 ]
IE Edge 说
[object Array][undefined, 1, 2]
而且,他们都是正确的
Chrome 根本不报告空索引 0
Node 显示索引 0 为空
Firefox 准确地告诉您发生了什么
试试这个:
var arr= [];var i = 1; for(var j = 1; j < 3; j++) arr[j*3]=j+3;console.log(arr);
火狐:
Array [ <3 empty slots>, 4, <2 empty slots>, 5 ]
Node
[ , , , 4, , , 5 ]
浏览器边缘
[object Array][undefined, undefined, undefined, 4, undefined, undefined, 5]
Chrome
[3: 4, 6: 5]
关于javascript - javascript 中奇怪的关联数组行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31981288/