Javascript 为什么concat方法似乎破坏了我的数组引用
为什么这不提醒a、b、cJavascript 为什么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
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()
。