Javascript - 原始与引用类型

sar*_*rma 7 javascript pass-by-reference

在下面的代码中,我们传递一个对象.所以,根据javascript我们传递了一个引用和操作.

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

function x(n) {
n = n + 2;
}
Run Code Online (Sandbox Code Playgroud)

但是提醒10而不是12.为什么?

g.k*_*esz 10

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
}
Run Code Online (Sandbox Code Playgroud)