<分区>
在下面的代码中,我们传递了一个对象。因此,根据 javascript,我们正在传递引用并进行操作。
var a = new Number(10);
x(a);
alert(a);
function x(n) {
n = n + 2;
}
但是提醒的是 10 个而不是 12 个。为什么?
<分区>
在下面的代码中,我们传递了一个对象。因此,根据 javascript,我们正在传递引用并进行操作。
var a = new Number(10);
x(a);
alert(a);
function x(n) {
n = n + 2;
}
但是提醒的是 10 个而不是 12 个。为什么?
最佳答案
n
是 x
的局部变量,首先它被设置为与全局 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/