Javascript数组奇怪的行为

rha*_*dyn 2 javascript arrays

好的,写的如下:

var element = { "name": "" };

var array = [];

for (var i = 0; i < 2; ++i) {
    var newelement = element;
    newelement.name = i.toString();
    array[i] = newelement;
}    
Run Code Online (Sandbox Code Playgroud)

结果:array [0] .name == array [1] .name =="1".但是用另一种方式写:

var element = { "name": "" };

var array = [];

for (var i = 0; i < 2; ++i) {
    var newelement = { "name": i.toString() };
    array[i] = newelement;
}
Run Code Online (Sandbox Code Playgroud)

结果:array [0] .name =="0"和array [1] .name =="1".

告诉我为什么.

Ale*_*tin 6

因为在第二个示例中,您在每次迭代时创建一个新对象,但在第一个示例中,您始终引用相同的元素.