Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2010, 11:59
Аватар для mycoding
NodeJS developer - ушел
Отправить личное сообщение для mycoding Посмотреть профиль Найти все сообщения от mycoding
 
Регистрация: 06.01.2010
Сообщений: 1,022

else if или switch
Что быстрее else if или switch конструкция, прочитал в книге , что switch быстрее, есть сомнения...
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2010, 13:18
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

ну когда у тебя 2 или 3 варианта, сатвь иф-эльс.. а если их больше 5, 10.. или может стать больше, то лучше использоваться свич..
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 20.01.2010, 15:27
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Конструкции вида
var vr = getVr(); // some variable
if(vr == 1) {/*blah-blah-blah*/}
else if(vr == 2) {/*blah-blah-blah*/}
else if(vr == 3) {/*blah-blah-blah*/}
else {/*blah-blah-blah*/}
Лучше делать switch'ем. То, что не получается сделать switch'ем — через else if.
Ответить с цитированием
  #4 (permalink)  
Старый 20.01.2010, 15:33
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Также, иногда удобно заменить switch объектом.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #5 (permalink)  
Старый 20.01.2010, 18:01
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Dmitry A. Soshnikov
Также, иногда удобно заменить switch объектом.
Можно пример?
Ответить с цитированием
  #6 (permalink)  
Старый 20.01.2010, 18:16
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от B~Vladi
Можно пример?
Ну, иногда можно видеть код:

function doThis() {
  ...
}

function doThat() {
  ...
}

function foo(bar) {
  switch (bar) {
    case 'this':
      doThis();
      break;
    case 'that':
      doThat();
      break;
    ...
    default:
      ...
  }
}

foo('this');
foo('that');
...


который можно преобразовать в

var commands = {
  doThis: function () {...},
  doThat: function () {...}
};

function foo(bar) {
  return commands['do' + bar.capitalize()]();
}


Однако, это не всегда возможно. Но, в тех случаях, когда возможно - может быть достаточно эффективно в плане кода (в некоторых случаях - менее эффективно в плане памяти).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #7 (permalink)  
Старый 21.01.2010, 03:32
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Dmitry A. Soshnikov
Также, иногда удобно заменить switch объектом.
у меня несколько примеров, где это оказалось эффективно в плане производительности (ну и код конечно покрасивше стал).

Один из них (кусок метода вызываемого так: new Date().add({y: 1, m: 5, d: 10, s: 500}) ):
this.setTime(this.getTime() + count * ({w: 6048e5, d: 864e5, h: 36e5, n: 6e4, s: 1e3}[interval] || 1));
Ответить с цитированием
  #8 (permalink)  
Старый 21.01.2010, 08:55
Аватар для zm8
zm8 zm8 вне форума
Новичок на форуме
Отправить личное сообщение для zm8 Посмотреть профиль Найти все сообщения от zm8
 
Регистрация: 04.03.2009
Сообщений: 5

http://webo.in/articles/habrahabr/78...s-performance/,
раздел "Ветви".
Ответить с цитированием
  #9 (permalink)  
Старый 24.01.2010, 06:25
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B@rmaley.e><e
То, что не получается сделать switch'ем — через else if
+1
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра орел или решка на jquery. В любом случаи выводит вы проиграли! Dimaz jQuery 4 25.12.2009 15:04
Удалить ряд символов перед или после курсора до определенного сивола brd Javascript под браузер 3 30.10.2009 08:20
Как определить цвет (темный он или светлый)? mouse_web Элементы интерфейса 6 22.07.2009 14:35
html или xhtml nemo (X)HTML/CSS 17 29.06.2009 10:05
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09