是否有编写以下100个作业的快捷方式?
variable_1 = 1;
variable_2 = 2;
variable_3 = 3;
...
variable_100 = 100;
我试过了
for(var i = 1; i <= 100; i++) {
variable_ + i = i;
}
但是我收到错误消息“分配中的左侧无效”。有什么想法吗?
答案 0 :(得分:23)
以下是一些方法:
这是最直接的方法:
for(var i = 1; i <= 100; i++) {
eval("var variable_" + i + " = " + i);
}
variable_1; // => 1
上述方法的免责声明:我认为此问题不适合使用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
关于使用窗口创建全局变量的注释中的注释:我建议不要这样做,因为这是一种污染全局范围并在不知不觉中踩到变量的快速方法。
David建议使用数组。这是另一个好主意,并且,根据您的尝试,可能是首选:
var arr = [];
for(var i = 1; i <= 100; i++) {
arr.push(i);
}
arr[0]; // => 1
答案 1 :(得分:6)
这样做:
for(var i = 1; i <= 100; i++) {
eval("variable_" + i + " = " + i + ";");
}
eval
基本上是邪恶的,但为了这个目的,可以使用它。 (reference)
答案 2 :(得分:5)
最好使用数组
var variable = [];
for (var i=1; i <= 100; i++) {
variable[i] = i;
}
稍后,您可以使用变量[1],变量[2]等
来访问这些值答案 3 :(得分:3)
如果这就是为什么不定义对象的数组
var a = new Array();
for(i=0;i<100;i+=)
a[i] = i;
答案 4 :(得分:3)
使用数组:
var variable = [];
for(var i = 1; i <= 100; i++) {
variable[i] = i;
}
通过类比,你想要使用数组而不是100个变量,原因与你想要的相同
<div class="variable"></div>
<div class="variable"></div>
<div class="variable"></div>
//and so on
而不是
<div id="variable_1"></div>
<div id="variable_2"></div>
<div id="variable_3"></div>
//and so on
<div id="variable_100"></div>
Invalid left-hand side in assignment
生成此错误是因为variable_ + i
是表达式。解释器认为您正在尝试添加两个变量,而不是连接变量名和字符串。表达式不能位于赋值操作的左侧。
答案 5 :(得分:3)
为什么不使用数组呢?
<script language="javascript">
var arrayVar = new Array();
for (var i=0; i<100; i++) {
arrayVar["variable_" + i] = i;
}
</script>
答案 6 :(得分:1)
for(var i = 1; i <= 100; i++) {
window["variable_" + i] = i;
}
alert( variable_50 );
alert( variable_34 );
答案 7 :(得分:0)
假设您使用的是浏览器,则可以执行以下操作:
global[variable] = 'hello'
console.log(variable)
-> hello