Определение итератора цикла перед циклом for? - PullRequest
0 голосов
/ 02 июня 2011

Недавно меня критиковали за то, что я структурировал свои циклы for следующим образом:

var i:MovieClip;
for each(i in array)
{
    // be awesome
}

Или

var i:uint = 0;
for(i; i<10; i++)
{
    // be more awesome
}

Лично для меня это звучит лучше, но яподвергается нападению за это.Есть ли какая-либо разница?

Ответы [ 2 ]

5 голосов
/ 02 июня 2011

Старый ответ

Да: как вы это делаете, переменная продолжает жить после окончания цикла. Убедившись, что переменная не существует вне области действия цикла, вы никогда не будете случайно ссылаться на нее вне цикла.

Обновление:

По крайней мере, так делают большинство языков. Однако в ActionScript переменная цикла for находится в области действия родительского элемента! Так что на самом деле нет никакой разницы в ActionScript .

3 голосов
/ 02 июня 2011
Ответ

trutheality является лучшим соображением в большинстве языков, и отличный ответ, учитывая, что этот вопрос не был помечен как actionscript-3 до более поздних версий.

Однако Actionscript использует подъем переменных, где переменные, определенные в любом месте в функции, ограничены этой функцией, а не ее внутренним блоком. Это сообщение в блоге хорошо описывает это и упоминается в документах по переменной области действия . Из-за подъема в ActionScript нет разницы между определением переменных до или внутри цикла.

Чтобы показать, насколько это безумие, вы можете даже определить переменную после цикла:

for (i = 0; i < 5; i++) {
  trace(i);
}
var i:int;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...