Javascript通过引用和局部变量赋值传递



我的问题与这篇文章有关,但我仍然有问题。

如果在一个命名空间中有两个数字

var global_namespace = {a:3, b:5};

剩下的代码是

function change() {
    var a = this.global_namespace.a;
    var b = this.global_namespace.b;
    a += 2;
    b *= 2;
}
console.log(global_namespace.a + " " + global_namespace.b);
change();
console.log(global_namespace.a + " " + global_namespace.b);

我想声明对命名空间中的变量的引用,但是当我观察调试器时,局部变量a和b在没有更新命名空间中的变量的情况下发生了变化。我试图引用全局命名空间vars的全部原因是允许在整个函数中使用较短的var名称,以提高可读性。但是,我不能因为在函数范围内存储命名空间的副本而牺牲可能加倍的内存。

如果你想通过引用改变变量,你应该这样做

var global_namespace = {a:3, b:5};
function change() {
    global_namespace.a += 2;
    global_namespace.b *= 2;
}
console.log(global_namespace.a + " " + global_namespace.b);
change();
console.log(global_namespace.a + " " + global_namespace.b);

最新更新