参见英文答案 >
Why isn’t this object being passed by reference when assigning something else to it?4个
在下面的代码中,我们传递一个对象.所以,根据javascript我们传递了一个引用和操作.
在下面的代码中,我们传递一个对象.所以,根据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引用的值从未实际修改过.看到
赋值的左侧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 }