javascript中奇怪的关联数组行为

时间:2015-08-13 06:47:54

标签: javascript node.js

如果我在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。

1 个答案:

答案 0 :(得分:5)

Firefox说

Array [ <1 empty slot>, 1, 2 ]

IE Edge说

[object Array][undefined, 1, 2]

并且,他们都是正确的

Chrome只是不报告空索引0

节点显示索引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 ]

节点

[ , , , 4, , , 5 ]

IE Edge

[object Array][undefined, undefined, undefined, 4, undefined, undefined, 5]

[3: 4, 6: 5]