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

时间:2014-06-26 20:58:37

标签: javascript namespaces pass-by-reference

我的问题与this post有关,但我仍然遇到问题。

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

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变量在不更新命名空间中的变量的情况下发生变化。我试图引用全局命名空间变量的全部原因是允许在整个函数中使用较短的var名称来提高可读性。我不能通过在函数范围内存储命名空间的副本来牺牲可能使我的记忆倍增。

1 个答案:

答案 0 :(得分:0)

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

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);