在 JavaScript 中,我想创建一个带有参数的函数,并且在这个函数中将创建一个变量,其名称将是参数的值。
例如,如果用户在参数中传递“jack”,那么在函数中我想要一个名称为 jack 的变量,如:
var jack = "";
在 JavaScript 中,我想创建一个带有参数的函数,并且在这个函数中将创建一个变量,其名称将是参数的值。
例如,如果用户在参数中传递“jack”,那么在函数中我想要一个名称为 jack 的变量,如:
var jack = "";
您可以做的最好的事情是创建一个对象并将变量名称分配给创建的对象的键,如下所示 -
var myvar={};
function create(var){
myvar[var]='values';
}
通常,您不需要这样做。正如Bergi 所指出的,一个局部变量通常就足够了。但是,如果您确实需要使用此技术,您可以将属性赋予window
对象:
function setVariable(userPassedString);
window[userPassedString] = "";
}
永远不要使用eval
它,无论你多么想这样做。
通过函数创建局部变量通常是个坏主意。你可以通过传递一个本地对象来完成类似的事情,例如
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
你总是可以使用字典。这是一个非常简单的存根:
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'));
为了防止使用window
全局数组,您可以创建一个保存变量的本地数组。
function doSomething(var) {
var vars = {};
vars[var] = value;
}