2015-03-08 2 views
-1

http://jsfiddle.net/VaAlina/oupmd0hf/Почему все мои петли не работают?

Прокомментированный код не работает. Площадь рядом с бомбой - зеленая. Желтые - бомбы. Синий - пустота.

Я хочу, чтобы заменить этот вид код->

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

С this->

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

Где ошибка?

+1

Вы не можете динамически объявлять имена переменных, как это было в 'var dangerItem + j'. Но вы можете пойти с массивом 'var dangerItems = [];' и нажимать элементы внутри –

ответ

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

+1

@Xufox не очень злоупотребляет обозначениями и действителен. Я чувствовал, что лучше не предлагать загрязнять глобальное пространство имен, хотя для тех, кто, кажется, только начинает – charlietfl

+0

Да, конечно ... Я как бы вспомнил, откуда-то лет назад, что «окно [...]» было плохой практикой. Я не ясно помню причину, хотя ... – Xufox

Смежные вопросы