我应该如何在JavaScript函数中通过引用传递?
例如:
function passByReference(a){
a = "banana";
}
var x = "apple";
passByReference(x);
此处x应输出banana
。
我是JavaScript新手;任何帮助,将不胜感激。提前谢谢。
答案 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
。