在javascript中动态声明变量名称

时间:2013-05-15 14:06:59

标签: javascript jquery

在JavaScript中我想创建一个带参数的函数,在这个函数中将创建一个变量,其名称将是参数的值。
例如,如果用户在参数中传递“jack”,那么在函数中我想要一个名称为jack的变量:

var jack = "";

5 个答案:

答案 0 :(得分:1)

通常,您不需要这样做。正如 Bergi 所指出的,局部变量通常就足够了。但是,如果您确实需要使用此技术,则可以将属性赋予window对象:

function setVariable(userPassedString);
    window[userPassedString] = "";
}

不管你有多么诱惑,都不要使用eval

答案 1 :(得分:1)

通过函数创建局部变量通常是个坏主意。您可以通过传递本地对象来完成类似的事情,例如

function setVar(o, name, value)
{
    o[name] = value;
}

然后,在你的本地范围内:

var o = {};

setVar(o, 'jack', 123);

// o.jack contains 123

通过这种方式,如果真的需要(这很少需要)以这种方式引入全局变量,你总是可以像这样调用函数:

setVar(window, 'jack', 123);
// now window.jack == jack == 123

答案 2 :(得分:1)

您可以做的最好的事情是创建一个对象并将变量名称分配给创建的对象的键,如下所示 -

var myvar={};
function create(var){
    myvar[var]='values';
}

答案 3 :(得分:0)

为了防止使用window全局数组,您可以创建一个包含变量的本地数组。

function doSomething(var) {
  var vars = {};
  vars[var] = value;
}

答案 4 :(得分:0)

你总是可以使用字典。这是一个非常简单的存根:

function Dictionary(){
    var container = {};

    this.set = function(key, value){
        container[key]  = value;
    }

    this.get = function(key){
        return container[key];
    }
}

var vars = new Dictionary();
vars.set('foo', 'foo rocks');
vars.set('bar', 'bar rocks too');

console.log(vars.get('foo'));
console.log(vars.get('bar'));