1

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

var jack = "";
4

5 回答 5

1

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

var myvar={};
function create(var){
    myvar[var]='values';
}
于 2013-05-15T14:26:30.867 回答
1

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

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

永远不要使用eval它,无论你多么想这样做。

于 2013-05-15T14:07:40.050 回答
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
于 2013-05-15T14:13:57.347 回答
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'));
于 2013-05-15T15:17:16.960 回答
0

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

function doSomething(var) {
  var vars = {};
  vars[var] = value;
}
于 2013-05-15T14:14:33.133 回答