所以,这并不像我期望的那样:
var x = [1,2,3];
var y = x;
y.push(4);
console.log(x);
我认为它会记录[1,2,3],但会记录[1,2,3,4]!我需要的是有一个只为y添加值的函数,而不是x - 我希望能够使用[1,2,3]数组,但也能够“回到它”并且取消所做的更改。我希望这有足够的意义......
答案 0 :(得分:3)
var x = [1,2,3];
var y = x.slice();
y.push(4);
console.log(x); // Outputs 1,2,3
使用slice
是获取数组的副本的最简单方法。
请注意,在Javascript中x
和y
引用到数组。在这方面,Javascript的行为与例如PHP不同。
所以当你执行y.push(4)
时,你将一个元素推送到x
引用的同一个数组中。