是否有编写以下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
以下是一些方法:
这是最直接的方法:
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是邪恶的主要原因.
这是一个更好,更好的方式:
// 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)
关于使用窗口创建全局变量的注释中的注释:我建议不要这样做,因为它是一种污染全局范围并在不知不觉中踩到变量的快速方法.
大卫建议使用数组.这是另一个好主意,并且,根据您的尝试,可能是首选:
var arr = [];
for(var i = 1; i <= 100; i++) {
arr.push(i);
}
arr[0]; // => 1
Run Code Online (Sandbox Code Playgroud)
这样做:
for(var i = 1; i <= 100; i++) {
eval("variable_" + i + " = " + i + ";");
}
Run Code Online (Sandbox Code Playgroud)
eval基本上是邪恶的,但为了这个目的,使用它是可以的.(参考)
你最好使用数组
var variable = [];
for (var i=1; i <= 100; i++) {
variable[i] = i;
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用变量[1],变量[2]等访问这些值.