如何在javascript中通过引用传递

时间:2014-05-02 06:47:54

标签: javascript

我应该如何在JavaScript函数中通过引用传递?

例如:

function passByReference(a){
    a = "banana";
}

var x = "apple";
passByReference(x);

此处x应输出banana

我是JavaScript新手;任何帮助,将不胜感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

用对象包装变量。对象的属性通过引用传递。

function passByReference(a) {
   a.fruit = 'banana';
}

var wrapper = {fruit: 'apple'};
passByReference(wrapper);

答案 1 :(得分:0)

您不能通过引用传递。如果要从被调用函数中修改调用者的状态,可以采用以下两种方法:

有时最适合将状态包装在对象中:

var x = { valueToChange: 'initialValue' };
passByReference(x);

这是有效的,因为对于对象,传递了对象所在地址的指针。该指针按值传递,但仍指向同一对象。

在其他一些情况下,回调可以解决问题:

var x = "apple";

passByReference(function (newValue) { x = newValue; });

function passByReference(callback) {
    callback("banana");
}

这是有效的,因为如果你定义一个函数,它会构建一个闭包以及它引用的所有变量。调用函数时,它实际上会修改x

的值