Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Правильность написания


Автор: zenuch 30.1.2007, 17:48
Меня все мучает вопрос почему во  многих книжках по JS 
цикл пускают в таком духе:
Код

for(var i in object){
} 

а не 
Код

var i;
for(i in object){
} 

Ведь в первом случае идет n-кратная инициализация переменной -- что не есть хорошо.
Вопрос: "Может я не правильно рассуждаю?"


Автор: Zeroglif 30.1.2007, 21:49
Цитата(zenuch @  30.1.2007,  17:48 Найти цитируемый пост)
Меня все мучает вопрос почему во  многих книжках по JS цикл пускают в таком духе:

Потому что это прямо описано в ECMAScript (12.6.4), хотя декларацию и можно легко вынести наружу, от этого суть не поменяется, только лишняя строчка да пара лишних символов.

Цитата(zenuch @  30.1.2007,  17:48 Найти цитируемый пост)
Вопрос:"Может я не правильно рассуждаю?"

Ответ: Неправильно. smile

Цитата(zenuch @  30.1.2007,  17:48 Найти цитируемый пост)
Ведь в первом случае идет n-кратная инициализация переменной -- что не есть хорошо.

В javascript нет n-кратной инициализации или конкретизации переменных (ECMAScript, 10). Это делается один раз (условно говоря до начала построчного разбора кода) непосредственно при входе в контекст/область исполнения (execution context). Можно 100 раз повторить декларацию переменной, 99 из них будут проигнорированы. Отсюда конструкция for-in не будет в каждый проход заново декларировать i, максимум - это перевычисление идентификатора (на совести конкретного движка).


Автор: zenuch 31.1.2007, 09:23
Блин спасибо Zeroglif просвятил! Спасибо этому форуму и тебе в частности за то что помогаешь!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)