对象通过 JavaScript 中的引用传递。意味着该对象从任何地方发生的变化都应该得到反映。
在本例中,console.log(a) 的预期输出为 {}
function change(a,b) {
a.x = 'added';
a = b;//assigning a as {} to b
}
a={}
b={}
change(a,b);
console.log(a); //expected {} but output {x:'added'}
console.log(b)
这里发生了什么?据我所知,这不应该是因为功能范围。
谢谢
如果您添加另一行,您可以更清楚地了解正在发生的情况:
function change(a,b) {
a.x = 'added';
a = b;
a.x = 'added as well';
};
a={};
b={};
change(a,b);
console.log(a); //{x:'added'}
console.log(b); //{x:'added as well'}
当你在做的时候a = b
您正在分配局部变量a
到参考b
持有。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)