Javascript代码无法按预期工作

时间:2013-01-30 13:14:32

标签: javascript firebug

我正在运行此代码并检查firebug中的日志:

    var a = new Array();
var b = new Array();
for (i=0; i<2 ; i++){
    a.push(1);
    b.push(a);
    console.log("a", a);
    console.log("b", b);
};

日志显示以下值:

a [1]
b [[1]]
a [1,1]
b [[1,1],[1,1]]

据我所知,价值应该是:

a [1]
b [[1]]
a [1,1]
b [[1],[1,1]]

我做错了什么,我怎么能得到我想要的价值?

1 个答案:

答案 0 :(得分:8)

当您使用.pusha附加到b的末尾时,您将传递引用而不是 ByVal 作为数组对象。这意味着a的未来更改会反映在a中的b中。 在a .push b时,您需要.slice var a = new Array(), b = new Array(); for (i=0; i<2 ; i++) { a.push(1); b.push(a.slice()); console.log("a", a); console.log("b", b); }; /* a [1] b [[1]] a [1, 1] b [[1], [1, 1]] */

{{1}}