2014-12-06 54 views
1
var allCoords = [{ x: 2, y: 3 }, { x: 3, y: 4 }]; 
var emptySpaces = allCoords; 

emptySpaces.splice(0, 1); 
console.log(allCoords.length); 
console.log(emptySpaces.length); 

我不明白为什么这两个输出为“1”。为什么当我只想要编辑第二个,emptySpaces时,原始数组allCoords被修改?修改一个数组会改变我制造的另一个数组

+0

答案很简单,他们是相同的阵列。 'emptySpaces = allCoords'创建一个引用,而不是副本 – charlietfl 2014-12-06 06:44:59

回答

-2

修改你的代码是这样的:

(function testing() { 
    var allCoords = []; 
    var emptySpaces = allCoords.slice(); 

    emptySpaces.push({ 
     x: 1, 
     y: 2 
    }); 
    console.log(allCoords.length); 
    console.log(emptySpaces.length); 
}()); 
+0

在这个例子中,'allCoords.slice()'应该是'[]'。没有理由克隆一个空数组。 – 2014-12-06 05:23:13

相关问题