如何在javascript中通过引用传递

如何在javascript中通过引用传递,javascript,Javascript,如何在JavaScript函数中通过引用传递 例如: function passByReference(a){ a = "banana"; } var x = "apple"; passByReference(x); 在这里,x应该输出香蕉 我是JavaScript新手;任何帮助都将不胜感激。提前感谢。用对象包装变量。对象的属性通过引用传递 function passByReference(a) { a.fruit = 'banana'; } var wrapper = {f

如何在JavaScript函数中通过引用传递

例如:

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

var x = "apple";
passByReference(x);
在这里,x应该输出香蕉


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

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

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

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

您不能通过引用传递。如果要在被调用函数中修改调用方的状态,有两种方法:

有时,最好将状态包装到对象中:

var x = { valueToChange: 'initialValue' };
passByReference(x);
这是因为对于对象,会传递指向对象所在地址的指针。该指针按值传递,但仍指向同一对象

在其他一些情况下,回调会起到以下作用:

var x = "apple";

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

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

这是因为,如果您如上所述定义函数,它将与它引用的所有变量一起构建一个闭包。当调用函数时,它确实会修改
x

的值,但不完全如此。对象也按值传递。但是,属性本身就是引用。例如:这将不起作用
a={fruit:'banana'}
在functionyeah@zhonk you are right属性是引用本身,对象也是按值传递的。