有人可以在下面的代码中解释我,为什么当我做 to = {} 时,对象没有被重置?
var funky = function (o) {
o.z = null;
o.a = "aaa";
o = {};
};
var x = { z: "zzz"};
funky(x);
console.log(x);
最佳答案
因为 JavaScript 不通过引用传递。它按值传递引用。
区别很微妙,但很重要。要点是,对象变量的值不是对象;它是一个对象的引用。传递变量会传递该引用的副本。有了它,您几乎可以随意修改对象的内容,但您无法以调用者可以看到的方式将其替换为整个其他对象。
关于Javascript:通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15412909/