Javascript:通过引用传递

标签 javascript pass-by-reference

有人可以在下面的代码中解释我,为什么当我做 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/

相关文章:

javascript - 如何获取 Modernizr 功能的完整列表

javascript - jQuery before() 输出为字符串而不是 HTML

javascript - Jquery 仅克隆单击的元素内容

c++ - 为什么 pack 扩展变量没有通过引用传递?

ruby - 如果在 Ruby 中一切都是对象,为什么这不起作用?

javascript - 当为输入分配值时如何显示/隐藏 div

javascript - react 状态保持旧状态

c++ - 将参数作为 std::string 或 const std::string& 传递?

c++ - 从另一个类中修改对象的 std::vector

c++ - 为什么我在传递 vl 或 vl1 时得到与输出相同的值 (0x7fff5fbff808)?地址应该不同