Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.09.2008, 22:24
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от ZoNT
Если есть куча элементов, которым надо навесить обработчик в цикле, значит можно этот обработчик навесить 1 раз на парент и немного откорректировать код.
это и так понятно, и все так делают, не нужно это аргументом приводить

Сообщение от ZoNT
for (var k = 0, l=коллекция.length; k < l; k ++) - итого 3 лишних байта.
Вероятно, у тебя length будет использоваться неоднократно, поэтому ты его выше где вынесешь (var a = 'length'; ): =)

for (var k = 0, l=коллекция[a]; k < l; k ++) - итого, даже при двух подобных циклах в коде, ты сэкономишь 5 байт =) Только тогда весь код так пиши (как я предлагал в предыдущем посте var d = document; var a = 'add'; )

Ладно, все, спор бессмысленный, завершимся на этом.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 19.09.2008 в 22:30.
Ответить с цитированием
  #22 (permalink)  
Старый 19.09.2008, 22:29
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

если поищешь здесь на форуме скрипт маскированного воода, то убедишся, что я так и пишу
Ответить с цитированием
  #23 (permalink)  
Старый 26.10.2008, 22:43
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

Dmitry A. Soshnikov,
объясни пожалуйста, почему определение функции registerEvent
через скобки (function(){ ... })() будет "кэшировать" if-else и где про это можно почитать подробнее?
Ответить с цитированием
  #24 (permalink)  
Старый 27.10.2008, 00:07
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

EugenyK, все просто:

var f = function () {
  if (известныеДанные) {
    alert(1);
  } else {
    alert(2);
  }
};


При вызове данной функции f() всегда будет выполняться if (это очевидно).

Далее, известно, что функцию можно вызвать сразу после объявления:

(function a () { // объявляем функцию
  alert(3);
})(); // и тут же ее вызваем


Кстати, имя функции в данном случае опционально.

В JavaScript функция является объектом, ее можно вернуть, присвоить и т.д. - см. первый пример - переменной f присваивается анонимная функция, которая потом доступна для вызова через имя переменной - f(). Т.е. первый пример можно "перефразировать" так (мы делаем внешнюю оболочку из анонимной функции, которая вызывается сразу же после своего определения и возвращает другую анонимную функцию):

var f = (function () {
  return function () {
    if (известныеДанные) {
      alert(1);
    } else {
      alert(2);
    }
  }
})();


Таким образов вызов нынешней функции f() ничем не отличается от первой. Но, естественно, никакого смысла в такой перефразировке нет - мы только лишь создали дополнительное действием по вызову внешней анонимной функции. Однако, (сейчас пойдет ответ на твой вопрос ): если мы вынесем if-else в определение внешней оболочки (при условии, что данные для проверки известны заранее и неизменны), то проверка выполнится единожды - когда функция-оболочка вызовется сразу же после определения. В проверках же нужно вернуть функции уже без проверок, - просто выполняющих свои действия:

var f = (function () {
  if (известныеДанные) {
    return function () {
      alert(1);
    };
  } else {
    return function () {
      alert(2);
    };
  }
})();


Теперь f - это либо function () {alert(1)}; либо function () {alert(2)};, и определилось это при инициализации - один раз. Сам вызов f() уже никаких проверок не делает.
__________________
Тонкости ECMAScript
Ответить с цитированием
  #25 (permalink)  
Старый 28.10.2008, 11:04
Аспирант
Отправить личное сообщение для EugenyK Посмотреть профиль Найти все сообщения от EugenyK
 
Регистрация: 17.03.2008
Сообщений: 64

Большое спасибо! Теперь всё ясно.
Ответить с цитированием
  #26 (permalink)  
Старый 28.10.2008, 18:03
Профессор
Отправить личное сообщение для alexKniaz Посмотреть профиль Найти все сообщения от alexKniaz
 
Регистрация: 14.10.2008
Сообщений: 186

Цитата:
100байт*1000 000 000 = 93 гига трафика в сутки!
Ну чё мелочиться??? 1 секунда ничего не даст!!!! ВЫВОД - ОПТИМИЗИРУЙТЕ РАЗМЕР!!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IE динамически установить значение события onClick? Гость Элементы интерфейса 6 16.01.2011 23:46
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
Обработка события Deep Events/DOM/Window 12 29.07.2009 22:58
отправка файла через обработчик события submit starrich AJAX и COMET 2 13.08.2008 22:29
Dom и события кнопок Гость Events/DOM/Window 4 07.08.2008 18:53