嗨我需要在javascript循环中创建一个变量加载,所以说我的循环从0开始循环5次,到最后应该定义以下变量:
variable_0
variable_1
variable_2
variable_3
variable_4
有谁能告诉我该怎么做?
答案 0 :(得分:4)
这将通过在window
对象上注册它们来创建“全局”变量:
for (var i = 0; i != 5; ++i) {
window['variable_' + i] = null;
}
这样做并不是很好但是= /更好的方法是定义一个在其中创建动态属性的对象。
var obj = {}
for (var i = 0; i != 5; ++i) {
obj['variable_' + i] = null;
}
console.log(obj.variable_0); // null
答案 1 :(得分:1)
为什么不使用数组:
var variable = [];
如果你真的想要创建5个变量,你需要选择它们的范围,最简单的可能是window
,然后你可以使用sqare括号语法:
for(var i=0;i<5; i++){
window["variable_" + i] = 0; // or anything really!
}
现在可以使用以下变量:
window.variable_1 = 123
答案 2 :(得分:0)
您只能在Object
中创建可变命名的变量:
obj['variable_' + i] = value;
功能范围变量没有等价物,但你当然可以这样做:
function foo() {
var obj = {};
for (var i = 0; ... ) {
obj['variable_' + i] = value;
}
}
您可以使用window
全局对象代替obj
伪造全局变量(但不应该伪造),如@Jack所示。
当然在大多数情况下(因为你使用数字来区分变量)你真正要做的就是使用一个数组:
var myvar = [];
for (var i = 0; i < n; ++i) {
myvar[i] = ...;
}