JavaScript 对象作为函数的参数

标签 javascript javascript-objects

我对 JavaScript 对待作为参数传递给函数的对象的方式有点困惑。

例如,在以下代码中:

var a = {
  val: "old"
};
var b = {
  val: "old"
};

function update(a, b) {
  a.val = "new";
  b = {
    val: "new"
  };
}

update(a, b);

console.log(a, b);

输出如下:

enter image description here

val a的属性(property)已更改,但 b 的更改不是。我在某处读到,对象是通过引用函数来传递的。谁能解释一下这种行为。

提前致谢。

最佳答案

当你做这个

function update(a, b) {
  a.val = "new";
  b = {
    val: "new"
  };
}

您将 b 指向一个新对象,但仅在更新函数中

关于JavaScript 对象作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43731239/

相关文章:

javascript - window.location.protocol 和 window.isSecureContext 的区别?

javascript - 获取对象数组内对象属性的值

javascript-objects - JavaScript : When to use a dollar sign before a variable name

Javascript setattr 或 setOwnProperty

javascript - 在 javascript 对象中调用私有(private)方法

javascript - Node.js Forever 不会创建日志文件

javascript - 如何更改数据表中的行颜色?

javascript - 一旦计数功能达到 24 小时,它就会重置

javascript - 将参数传递给 Node.js 中的导入函数

javascript - 为其他页面预加载外部文件(CSS、JavaScript)