如何将全局变量作为实际参数传递给函数以更改全局变量的值。
如何更改错误值
function fn_check_input(reg, obj, tips, error){
var reg = reg;
var val = obj.val();
if (!val){
error = true;
obj.next().html(tips[0]).show();
return;
}
if (reg.test(val)){
obj.next().hide()
error = false;
}else{
error = true;
obj.next().html(tips[1]).show();
}
}
答案 0 :(得分:0)
我不完全了解您的问题,因为它与全局变量有关,但是我可以告诉您:
JavaScript是按值传递的。幸运的是,对象只是一个引用,因此当按值传递对象时,您可以对其成员进行突变(因为它仍然指向同一实际对象)。
您可以执行以下操作:
// @param {Object} error - error.status will be modified by this function
function mutateError(error) {
error.status = false;
}
// error is no longer a primitive, so we can mutate it now
var error = { status: true }
console.log(error.status); // true
mutateError(error);
console.log(error.status); // false
正如其他人所提到的那样,您可能甚至根本不想这样做,仅通过return error;
进行操作可能会更好。
答案 1 :(得分:0)
Javascript使用按值传递,这意味着仅在此函数范围内更改此函数内部的error值即可。
也许考虑让函数返回要错误存储的值,并相应地在调用函数中更新error的值:
function fn_check_input(reg, obj, tips /*Removed Error Variable*/){
var reg = reg;
var val = obj.val();
if (!val){
//error = true;
obj.next().html(tips[0]).show();
return true; //Return the value of error
}
if (reg.test(val)){
obj.next().hide()
//error = false;
return false; //Return the value of error
} else{
//error = true;
obj.next().html(tips[1]).show();
return true; //Return the value of error
}
}
现在,当您调用函数时:
error = fn_check_input(reg, obj, tips);
答案 2 :(得分:0)
如果您使用的是全局变量,请不要担心将其作为参数传递。
var Test=false;
//uses global var
function F1() {
Test=true;
}
//Test is argument, so it is no longer global.
function F2(Test){
Test=true;
}
function Click(){
F1();
alert(Test); //true. Changes to global variable work as expected.
Test=false;
F2(Test);
alert(Test)//false. the global variable is not changed.
}
答案 3 :(得分:0)
在JS中,如果变量是原始类型。您可以将变量及其父级传递。例如:
function func(parent){
parent.child = 'foo';
};