Javascript - 原始类型与引用类型

标签 javascript pass-by-reference

<分区>

在下面的代码中,我们传递了一个对象。因此,根据 javascript,我们正在传递引用并进行操作。

var a = new Number(10);
x(a);
alert(a);

function x(n) {
n = n + 2;
}

但是提醒的是 10 个而不是 12 个。为什么?

最佳答案

nx 的局部变量,首先它被设置为与全局 a 相同的引用。然后右侧的 n + 2 被评估为一个数字(原始)。 赋值的左侧n,永远不会被评估,它只是一个标识符在那里。所以我们的局部变量现在设置为右侧的原始值。 a 引用的值实际上从未被修改过。见

var a = new Number(10);
x(a);
alert(a);  // 10

function x(n) {
  alert(typeof n);  // object
  n = n + 2;
  alert(typeof n);  // number
}

关于Javascript - 原始类型与引用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27340990/

相关文章:

javascript - 实现 Famo.us

swift - 通过引用传递常量参数

c++ - 为什么用点运算符的值在C++中没有更改?

C++:通过引用传递或使用私有(private)实例变量

C++:引用和指针问题(关于 OpenGL 的示例)

javascript - 删除 js 变量中 ( 和 ) 之间的文本

javascript - AngularJS 日期字符串与对象错误

Javascript 日期解析错误?

javascript - 尝试使用 HtmlUnit 解析 ember 应用程序时出错

c# - 采用 ref 类型并对其进行操作的 void 方法与将 ref 返回到同一对象的方法之间有什么区别