Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.03.2014, 11:40
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

Переменные внутри цикла
Строю кривую, для этого в цикле забиваю массив geometry трехмерными точками ( класс Vector3 ). Хочется для наглядности написать:

for (var t = 0; t <= 30; t+= 0.1)  
{
     var x = a*Math.cos( t );
     var y = a*Math.sin( t );
     var z = b*t;

     var vec = new Vector3( x, y, z );
     geometry.push( vec );
}


Вопрос, возникает ли при этом 3*300 = 900 переменных (из-за x,y,z) ? Страдает ли производительность? Лучше так?

for (var t = 0; t <= 30; t+= 0.1)  
{
     var vec = new Vector3( a*Math.cos( t ), a*Math.sin( t ), b*t );
     geometry.push( vec );
}

Просто я подозреваю, что в Javacsript нет такой проблемы, там переменные сами исчезают. Или не так, и лучше использовать второй код? Или нужно в духе Паскаля:
var x,y,z;
for (var t = 0; t <= 30; t+= 0.1)  
{
     x = a*Math.cos( t );
     y = a*Math.sin( t );
     z = b*t;

     var vec = new Vector3( x, y, z );
     geometry.push( vec );
}


Есть ли разница в Javascript между первым и третьим кодом?

Последний раз редактировалось alexan0308, 30.03.2014 в 11:42.
Ответить с цитированием
  #2 (permalink)  
Старый 30.03.2014, 11:51
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Если вы боитесь, что на каждой итерации цикла var создаст новую переменную, то напрасно. Переменная создается только 1 раз, а дальше ей просто будут присваиваться разные значения. Так что разницы между первым и третьим вариантом нет.
Ответить с цитированием
  #3 (permalink)  
Старый 30.03.2014, 11:57
Профессор
Отправить личное сообщение для alexan0308 Посмотреть профиль Найти все сообщения от alexan0308
 
Регистрация: 11.04.2011
Сообщений: 207

Сообщение от jsnb Посмотреть сообщение
Если вы боитесь, что на каждой итерации цикла var создаст новую переменную, то напрасно. Переменная создается только 1 раз, а дальше ей просто будут присваиваться разные значения. Так что разницы между первым и третьим вариантом нет.
Ок, спасибо! Я так и подозревал, поскольку часто встречал такие цыклы...
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2014, 11:59
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Причем надо понимать, что переменные объявленные через var создаются еще на этапе инициализации скрипта т.е. до выполнения кода. А во время выполнения идет уже только присваивание.
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2014, 17:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,480

Я люблю делать так:
for (var t = 0, x, y, z; t <= 30; t+= 0.1){ 
     x = a*Math.cos( t );
     y = a*Math.sin( t );
     z = b*t;
 
     geometry.push( new Vector3( x, y, z ) );
}

Но наделе действительно разницы нет.
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2014, 17:22
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от alexan0308
Хочется для наглядности написать:
так и пиши

Сообщение от alexan0308
Вопрос, возникает ли при этом 3*300 = 900 переменных (из-за x,y,z) ?
объектов создастся 30/0.1
переменные x, y, z будут перезаписаны на 2+ итерациях
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ng-repeat внутри ng-repeat cartrege Angular.js 1 24.10.2013 14:25
Индивидуальные переменные в each Spamol jQuery 6 08.12.2012 14:34
Как установить задержку внутри цикла for - ? caca0 Javascript под браузер 2 29.05.2012 15:12
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Область видимости внутри функции YISHIMITSY Общие вопросы Javascript 1 25.08.2010 06:50