Javascript更改全局变量的值

时间:2018-07-11 03:11:37

标签: javascript

如何将全局变量作为实际参数传递给函数以更改全局变量的值。

如何更改错误值

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();
        }
    }

4 个答案:

答案 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';
};
相关问题