我们可以在函数中传递一个不可变变量的引用作为参数吗?
示例:
var x = 0;
function a(x)
{
x++;
}
a(x);
alert(x); //Here I want to have 1 instead of 0
发布于 2012-04-19 23:52:57
总而言之,Javascript原语类型总是通过值传递,而对象内部的值是通过引用传递的(感谢评论者指出我的疏忽)。所以要解决这个问题,你必须把你的整数放在一个对象中:
var myobj = {x:0};
function a(obj)
{
obj.x++;
}
a(myobj);
alert(myobj.x); // returns 1
发布于 2014-01-20 05:21:55
我发现了一种稍微不同的实现指针的方式,从C的角度来看,它可能更通用,更容易理解(因此更适合用户示例的格式)。
在JavaScript中,就像在C中一样,数组变量实际上只是指向数组的指针,所以您可以使用与声明指针完全相同的数组。这样,无论您在原始对象中如何命名变量,代码中的所有指针都可以以相同的方式使用。
它还允许使用两种不同的符号来表示指针的地址和指针地址处的内容。
下面是一个例子(我用下划线表示一个指针):
var _x = [ 10 ];
function foo(_a){
_a[0] += 10;
}
foo(_x);
console.log(_x[0]);
收益率
output: 20
发布于 2014-12-23 23:45:51
从window对象引用'x‘
var x = 0;
function a(key, ref) {
ref = ref || window; // object reference - default window
ref[key]++;
}
a('x'); // string
alert(x);
https://stackoverflow.com/questions/10231868
复制相似问题