[英]Programmatically setting the name of a variable
是否有编写以下100个作业的快捷方式?
variable_1 = 1;
variable_2 = 2;
variable_3 = 3;
...
variable_100 = 100;
我试过了
for(var i = 1; i <= 100; i++) {
variable_ + i = i;
}
但我收到错误消息“分配中的左侧无效”。 有任何想法吗?
以下是一些方法:
这是最直接的方法:
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
关于使用窗口创建全局变量的注释中的注释:我建议不要这样做,因为它是一种污染全局范围并在不知不觉中踩到变量的快速方法。
大卫建议使用数组。 这是另一个好主意,并且,根据您的尝试,可能是首选:
var arr = [];
for(var i = 1; i <= 100; i++) {
arr.push(i);
}
arr[0]; // => 1
你最好使用数组
var variable = [];
for (var i=1; i <= 100; i++) {
variable[i] = i;
}
之后,您可以使用变量[1],变量[2]等访问这些值。
如果是这样,为什么不定义对象的数组
var a = new Array();
for(i=0;i<100;i+=)
a[i] = i;
使用数组:
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
是表达式。 解释器认为您正在尝试添加两个变量,而不是连接变量名和字符串。 表达式不能位于赋值操作的左侧。
为什么不使用这样的数组呢?
<script language="javascript">
var arrayVar = new Array();
for (var i=0; i<100; i++) {
arrayVar["variable_" + i] = i;
}
</script>
for(var i = 1; i <= 100; i++) {
window["variable_" + i] = i;
}
alert( variable_50 );
alert( variable_34 );
假设您使用浏览器,则可以执行以下操作:
global[variable] = 'hello'
console.log(variable)
- > hello
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.