да, переменная приращения цикла находится в области действия родительского цикла, а не внутри самого цикла. Это намеренно, для примеров, подобных этому:
public function getPositionOfValue ( value:String ) : int
{
for ( var i:int = 0; i < someArray; i++ )
{
if (someArray[i] == value )
{
break;
}
}
return i;
}
это позволяет вам получить доступ к значению i после завершения цикла. Есть много случаев, когда это очень полезно.
Что вы должны делать в случаях, когда у вас есть несколько циклов внутри одной и той же области видимости, это переменная вне циклов:
public function getPositionOfValue ( value:String ) : int
{
var i:int;
for ( i = 0; i < 15; i++ )
{
//do something
}
for ( i = 0; i < 29; i++ )
{
//do something else
}
return i;
}
тогда вы избавитесь от своего предупреждения. Другая вещь, которую стоит рассмотреть, - назвать переменные инкремента цикла более наглядными.
Обновление: две другие вещи для рассмотрения:
1) вы не должны использовать uints, за исключением таких вещей, как цвета и места, где Flex ожидает uint. Они медленнее, чем int, чтобы использовать. Источник] 1 Обновление: похоже, этого не может быть в более новых версиях флеш-плеера: источник
2) когда вы изменяете переменную приращения цикла внутри объявления цикла, вы хотите убедиться, что вы установили для нее правильное значение инициализации, обычно 0. Вы можете получить некоторые трудные для отслеживания ошибки, если вы этого не делаете.