在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持有的引用。

关于javascript - javascript中的作用范围很奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30930560/

10-10 13:31