如何使用jquery创建动态变量?

我想要动态创建一些jquery变量。 在我的代码中,我有一个循环,并且循环值我想创建一些变量。 这是我的示例代码。

array=["student","parent","employee"] $.each(user_types, function( index, value ){ var value+"_type" // this is the type of variable i want to build. }) 

我找到了关于evalfunction的信息。 那段代码是这样的。

 var type = "type" eval("var pre_"+type+"= 'The value of dynamic variable, val';"); alert(pre_type) // this gives 'The value of dynamic variable, val' in alert box. 

是否有其他方法,因为我已经读过编码.js文件时不喜欢eval函数。

每当您发现自己在变量名称中使用变量时,您可能希望使用对象文字。 使用花括号{}创建对象,然后使用方括号表示法设置对象属性键:

 var user_types = ["student","parent","employee"]; var types = {}; $.each(user_types, function( index, value ){ types[value] = 'The value of dynamic variable, val'; }); 

的jsfiddle

注意:你没有标记它,但我假设因为你使用了each()你正在使用jQuery,请纠正我,如果我错了。

首先,我必须说,我想不出你为什么要这样做的任何理由。

如果您确实需要在全局范围内拥有这些变量,则可以执行以下操作:

 var array=["student","parent","employee"] array.forEach(function(value){ window[value+"_type"] = 'My value ' + value; }); console.log(student_type); console.log(parent_type); console.log(employee_type); 

如果你不想在全局范围内使用变量,恐怕我不知道一个优雅的解决方案。

我使用了array.forEach而不是你的jQuery循环,因为问题根本与jQuery无关,因为我认为你没有说出足够的逻辑来制作一个连贯的例子。

编辑:我应该说清楚,虽然创建的’变量’的行为与全局范围内的其他变量大致相同, 但它们不是变量 。 以下是它们的不同之处:

 // Difference 1: hoisting console.log(x); // undefined console.log(y); // ReferenceError: y is not defined var x = 5; window[y] = 5; console.log(x); // 5 console.log(y); // 5 // Difference 2: [[Configurable]] delete x; delete y; console.log(x); // 5 console.log(y); // ReferenceError: y is not defined