Javascript 为什么concat方法似乎破坏了我的数组引用

Javascript 为什么concat方法似乎破坏了我的数组引用,javascript,Javascript,为什么这不提醒a、b、c var results=[]; function test(r){ var abc = ['a','b','c']; r=r.concat(abc); } test(results); alert(results); 原因是concat不会修改您正在调用它的对象。此外,r=r.concat(abc)表示您不理解“按引用传递”。当您将r赋值给某个对象时,您并没有更改原始传入值所指向的对象,您所做的只是更新函数中的变量所指向的对象。这将有助于: var resul

为什么这不提醒a、b、c

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

原因是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);

如果我在阵列上搜索后想做些什么呢?换句话说,我如何让它在不返回值的情况下更新原始文件?谢谢你的解释,现在有道理了。我在某种程度上理解通过引用传递,但显然没有我应该理解的那么好。如果您真的需要,
r.push.push.apply(r,abc)
会在适当的位置对
r
引用的对象进行变异。但这有点难看。@qw3n gald我可以帮忙。为此,您需要使用一个函数来修改传入的变量。签出
push()
splice()