2014-12-06 57 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

相關問題