我需要做这样的事情,但我不知道如何
var a = 5
function myFunction(x){
if(x != 4) {
x = 4;
}
}
myFunction(a);
//afterward, a should equal 4
线索是,当this.x
发生变化时,var a
也应该改变(我需要能够对很多变量进行复杂的操作,我想通过调用函数来实现)< / p>
甚至可能吗?
答案 0 :(得分:1)
虽然它不一样,但你可以做类似的事情。
var a = {value: 5};
function myFunction(x){
if(x.value != 4){
x.value = 4;
}
}
myFunction(a);
或者使用数组:
var a = [5];
function myFunction(x){
if(x[0] != 4){
x[0] = 4;
}
}
myFunction(a);
另外我建议使用typesafe比较(===),(!==)
答案 1 :(得分:0)
当您致电myFunction
时,会将x
的值副本传递给该函数。因此,如果您将其称为传递a
,则数字文字5将在那里传递。正如您所说,您希望更改a
的值,当您传递给myFunction
的参数值与4.不同时。您可以直接参考a
来轻松完成你if
陈述的正文。如果已定义名为myFunction
的变量,运行时将首先检查函数a
。由于a
中没有定义任何变量myFunction
,因此它将查看定义myFunction
的范围,全局范围。由于定义了a
,因此它将赋值为4。
var a = 5;
function myFunction(x){
if(x != 4){
a = 4;
}
}
myFunction(a);
console.log(a);
&#13;