2015-03-08 100 views
-1

http://jsfiddle.net/VaAlina/oupmd0hf/为什么我所有的循环都不起作用?

评论代码无法运行。 炸弹旁边的区域是绿色的。黄色炸弹。蓝色 - 空虚。

我要替换这样的代码 - >

var dangerItem1 = "#" + danger1;//Replace thise code to commented 
var dangerItem2 = "#" + danger2; 
var dangerItem3 = "#" + danger3; 
var dangerItem4 = "#" + danger4; 

有了这个 - >

/* 
for(var j = 0; j < 4; j++){ 
    var dangerItem+j = "#" + danger+j; 
} 
*/ 

哪里错了吗?

+1

您不能像在'var dangerItem + j'中那样动态声明变量名称。但是你可以用一个数组var'dangerItems = [];'来推入 – 2015-03-08 21:28:33

回答

0

您不能动态创建变量名称。

你可以做的是将它们存储在数组或对象中。

对象可以使用[]表示法接受动态属性名称。

var danger =['green','red','blue','pink']; 
var dangerItem = []; 

for(var j = 0; j < 4; j++){ 
    dangerItem.push("#" + danger[j]); 
} 
// returns ["#green", "#red", "#blue", "#pink"] 

/* or */ 
var dangerItem = {}; 
for(var j = 0; j < 4; j++){ 
    dangerItem[ danger[j] ] = "#" + danger[j]; 
} 
// returns {"green":"#green","red":"#red","blue":"#blue","pink":"#pink"} 
+0

的元素。实际上,你可以使用下面的命令:window ['danger'+ j]' - 使用JavaScript的索引符号来访问对象键。 – Xufox 2015-03-09 02:53:01

+1

@Xufox没有真正滥用符号,它是有效的。我觉得最好不要提出污染性的全球命名空间,尽管对于似乎刚刚起步的人来说, – charlietfl 2015-03-09 02:59:24

+0

是的,当然......我从几年前的某个地方还记得,“窗口”是不好的做法。虽然我没有清楚地记得原因 – Xufox 2015-03-09 03:01:24

相关问题