我们可以传递不可变的变量引用作为函数中的参数吗?
例:
var x = 0; function a(x) { x++; } a(x); alert(x); //Here I want to have 1 instead of 0
由于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。因此,obj与x内存中的引用相同。改变Value财产的性质obj影响Value财产的性质x。
x
a
obj
Value
Javascript将始终按值传递函数参数。那只是语言的规范。您 可以x在两个函数都本地的作用域中创建,而根本不传递变量。