Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Хорошо ли писать var в цикле? (https://javascript.ru/forum/misc/14728-khorosho-li-pisat-var-v-cikle.html)

балерун 28.01.2011 12:02

Хорошо ли писать var в цикле?
 
Нежелательно объявлять переменную в цикле? Или ресурсы, которые тратятся на проверку, создана ли переменная, очень малы?

Меня интересует, как правильнее писать, так:
for (var i = 0; i < 10; i++) {
    var u = some_function();
}

или так:
var i, u;
for (i = 0; i < 10; i++) {
    u = some_function();
}

Тоже самое с циклом for(.. in ..)
Так:
for (var prop in obj) {}

или так:
var prop;
for (prop in obj) {}


Сорри, за такой мелочный вопрос :)

Vulkan 28.01.2011 12:05

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

Skipp 28.01.2011 12:16

если я не ошибаюсь разница только в количестве символов

Kolyaj 28.01.2011 12:19

Лучше первое. Переменная объявляется там, где начинает использоваться. В семантике и в скорости разницы нет.

PeaceCoder 28.01.2011 12:42

Цитата:

Сообщение от Kolyaj
В семантике и в скорости разницы нет.

Я вот не помню но разница вроде есть. Пример: надо использовтьпеременную в 2ух разных вариантах (всмысле она может содержать разные данные) и если ее обьявлять после проверки, то интерпретатор напишет(?), что переменная необьявлена или же потянется к глобальным переменным.

Kolyaj 28.01.2011 12:54

Цитата:

Сообщение от PeaceCoder
Пример: надо использовтьпеременную в 2ух разных вариантах (всмысле она может содержать разные данные) и если ее обьявлять после проверки, то интерпретатор напишет(?), что переменная необьявлена или же потянется к глобальным переменным.

Чего?

ksa 28.01.2011 13:09

Цитата:

Сообщение от Kolyaj
Лучше первое. Переменная объявляется там, где начинает использоваться.

А если потом будут чего-то дописывать? :D
Я все объявляю в самом начале... Мало того! Такая практика на том же COS даёт лучший контроль выделения оперативной памяти.

Kolyaj 28.01.2011 13:33

Цитата:

Сообщение от ksa
А если потом будут чего-то дописывать?

И что?

Цитата:

Сообщение от ksa
Мало того! Такая практика на том же COS даёт лучший контроль выделения оперативной памяти.

Что такое COS и как ваша практика помогает выделению оперативной памяти?

ksa 28.01.2011 13:51

Цитата:

Сообщение от Kolyaj
И что?

Твое объявление в цикле придется таки переносить... :D
Цитата:

Сообщение от Kolyaj
Что такое COS

Каше Обжект Скрипт
http://docs.intersystems.com/cache20...e.cls?KEY=TCOS

Цитата:

Сообщение от Kolyaj
и как ваша практика помогает выделению оперативной памяти?

Несколько определений подряд (и уш особенно в цикле :) ) съедают больше памяти

NO // Плохой пример
   n a
   n b
   n c
   // Остальной код
   q

YES // Хороший пример
   n a,b,c
   // Остальной код
   q


Это к тому что нужно тексты писать т.с. кроссязычно. :)

Kolyaj 28.01.2011 13:52

Цитата:

Сообщение от ksa
Твое объявление в цикле придется таки переносить...

Зачем? Объявление в цикле ничем не отличается от объявления в начале функции.

Цитата:

Сообщение от ksa
Каше Обжект Скрипт

И причём здесь JavaScript?


Часовой пояс GMT +3, время: 00:05.