一尘不染

JavaScript中的指针?

javascript

我们可以传递不可变的变量引用作为函数中的参数吗?

例:

var x = 0;
function a(x)
{
    x++;
}
a(x);
alert(x); //Here I want to have 1 instead of 0

阅读 442

收藏
2020-05-01

共1个答案

一尘不染

由于JavaScript不支持通过引用传递参数,因此您需要将变量设置为对象:

var x = {Value: 0};



function a(obj)

{

    obj.Value++;

}



a(x);

document.write(x.Value); //Here i want to have 1 instead of 0

在这种情况下,x是对对象的引用。当x传递给函数时a,该引用将复制到obj。因此,objx内存中的引用相同。改变Value财产的性质obj影响Value财产的性质x

Javascript将始终按值传递函数参数。那只是语言的规范。您 可以x在两个函数都本地的作用域中创建,而根本不传递变量。

2020-05-01