为什么concat方法似乎破坏了我的Array引用

时间:2011-03-08 03:48:24

标签: javascript

为什么这不会警告a,b,c?

var results=[];
function test(r){
  var abc = ['a','b','c'];
  r=r.concat(abc);
}
test(results);
alert(results);

1 个答案:

答案 0 :(得分:1)

原因是因为concat不会修改您正在调用它的对象。此外,r=r.concat(abc);表示您不理解通过引用传递。当你为某个东西分配r时,你没有改变原始的,传入的值指向的东西,你正在做的就是更新函数中的变量所指向的内容。这将有效:

var results=[];
function test(r){
  var abc = ['a','b','c'];
  return r.concat(abc);
}
results = test(results);
alert(results);