1

我的情况如下。

var varable_1=10;
var variable_2=20;
.....
var variable_n=10000;
function update_varable(variable){
   ....some code.....
}

我需要通过调用 update_variable('variable_1');update_variable('variable_2')....等来更新每个变量。

是否可以?

4

5 回答 5

2

如果要在函数内传递变量,update_variable则需要删除示例中的引号。方法有很多,我发一个简单的。您还可以在函数内传递多个变量。

演示在这里

var varable_1=10;
var variable_2=20;
var variable_n=10000;
function update_variable(x){
x = 300 //some new value
return x;
}

和电话:

variable_1 = update_variable(varable_1);

(您的函数名称在某些行中缺少“i”,它是“update_varable”)

                                                   ^  
                                               missing "i"
于 2013-07-09T06:39:33.257 回答
1

我认为数组更适合这项任务。

但是,如果您的变量名称类似于 var1、var2 .. varN,则可以将此代码与 eval 函数一起使用:

    var var1 = 10;
    var var2 = 20;

    function update_var(variable) {
        return variable += 1;
    }

    function main() {
        for (var i = 1; i < 3; i++) {
            eval("var" + i + " = update_var(var" + i + ")");
            eval("console.log(var" + i + ");");
        }
    }
于 2013-07-09T06:39:31.340 回答
1

如果您必须使用字符串作为更新函数的参数,您可以eval在函数内部使用来获取字符串后面的真实变量:

function update(varName) {
    eval(varName + " += 1;");
}
于 2013-07-09T06:46:33.097 回答
1

让我们在这里看看事实:

  • 你的变量有一个模式: variable_x 所以,对于我们的算法来说,它只是一个字符串:'variable_' + x
  • 您的所有变量都将附加到一个对象,它是一个声明的对象,或者一个全局对象,例如:a、myVars 或window
  • javascript 中的任何对象都可以使用索引器访问,因此 myObject.myVar 也可以写成 myObject['myVar']。

现在让我们看看算法:

function update(variable, value){
        window[variable] = value;
}

您可以随意调用它:

update('variable_1', 450.25);
于 2013-07-09T07:21:55.860 回答
-1
function update_varable(variable){
   variable += 10;

return variable;
}
于 2013-07-09T06:39:46.507 回答