Javascript push()方法改变引用数组中的值

时间:2013-02-17 19:10:44

标签: javascript

所以,这并不像我期望的那样:

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]数组,但也能够“回到它”并且取消所做的更改。我希望这有足够的意义......

1 个答案:

答案 0 :(得分:3)

var x = [1,2,3];
var y = x.slice();
y.push(4);
console.log(x);  // Outputs 1,2,3

使用slice是获取数组的副本的最简单方法。

请注意,在Javascript中xy 引用到数组。在这方面,Javascript的行为与例如PHP不同。

所以当你执行y.push(4)时,你将一个元素推送到x引用的同一个数组中。