以编程方式设置变量的名称

Ran*_*lue 16 javascript

是否有编写以下100个作业的快捷方式?

variable_1 = 1;
variable_2 = 2;
variable_3 = 3;

...

variable_100 = 100;
Run Code Online (Sandbox Code Playgroud)

我试过了

for(var i = 1; i <= 100; i++) {
    variable_ + i = i;
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息"分配中的左侧无效".有任何想法吗?

ben*_*tah 23

以下是一些方法:

方法1:使用eval

这是最直接的方法:

for(var i = 1; i <= 100; i++) {
  eval("var variable_" + i + " = " + i);
}
variable_1; // => 1
Run Code Online (Sandbox Code Playgroud)

免责声明上述方法:我认为这个问题不适合使用eval.如果您确实使用eval,则永远不应允许用户输入进入您正在进行的操作eval,或者您可以打开您的网站以应对安全风险.这个错误是人们说eval是邪恶的主要原因.

方法2:使用动态生成的对象属性

这是一个更好,更好的方式:

// If you want these variables to be global, then use `window` (if you're 
// in a browser) instead of your own object.
var obj = {};
for(var i = 1; i <= 100; i++) {
  obj["variable_" + i] = i;
}
obj.variable_1; // => 1
Run Code Online (Sandbox Code Playgroud)

关于使用窗口创建全局变量的注释中的注释:我建议不要这样做,因为它是一种污染全局范围并在不知不觉中踩到变量的快速方法.

方法3:使用数组

大卫建议使用数组.这是另一个好主意,并且,根据您的尝试,可能是首选:

var arr = [];
for(var i = 1; i <= 100; i++) {
  arr.push(i);
}
arr[0]; // => 1
Run Code Online (Sandbox Code Playgroud)


Sha*_*ard 6

这样做:

for(var i = 1; i <= 100; i++) {
    eval("variable_" + i + " = " + i + ";");
}
Run Code Online (Sandbox Code Playgroud)

eval基本上是邪恶的,但为了这个目的,使用它是可以的.(参考)

现场测试案例.


dhe*_*aur 5

你最好使用数组

var variable = [];
for (var i=1; i <= 100; i++) {
  variable[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

之后,您可以使用变量[1],变量[2]等访问这些值.