2010-11-09 2 views
2

Должен ли я объявлять _mcContainer var перед циклом или нет? (Увеличение производительности?)Объявление переменной в цикле или перед циклом в AS3?

for(var i:uint = _startIndex; i <= _endIndex; ++i){  
    var _mcContainer:MovieClip = _mcParent["i_" + _position]; 
} 

или

var _mcContainer:MovieClip; 
for(var i:uint = _startIndex; i <= _endIndex; ++i){ 
    _mcContainer = _mcParent["i_" + _position]; 
} 

?

+0

второй вариант быстрее, посмотрите на это: http://www.rozengain.com/blog/2007/05/01/some-actionscript-30-optimizations/ –

+0

@george, какая часть этого страница связана с этим вопросом? У меня проблемы с поиском чего-либо. – spender

+0

@spender «Мы также можем ускорить цикл, сохранив длину массива в переменной вне цикла» до «Константы из других классов» ... u правы ... не на виду –

ответ

6

Это не трудно проверить ...

... однако согласно документации, это не должно иметь никакого значения, потому что объявления переменных поднимаются к верхней части блока метода в любом случае.

От the docs:

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

+1

Хорошая точка. Это несколько раз укусило меня, когда я развивался в AS3. Другие компиляторы, такие как C++ (и даже Java), распознают использование переменной до того, как ее объявят как ошибку времени компиляции. –

+0

Из соглашений о кодировании Flex: http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions#CodingConventions-Variables. Я думал, что я должен объявлять переменные только до того, как они будут использованы, и это увеличит производительность, но благодаря вашей документации, я вижу, что нет. :] Благодаря! – Rihards

+0

Имея переменные, объявленные после их использования, уменьшают четкость кода, на мой взгляд. Они должны быть объявлены до их использования - в худшем случае в той же строке. Но не позже. – Ixx

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