Javascript.RU

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

Мелкие/важные/интересные оптимизации
Здравствуйте, уважаемые форумчане!

Читаю код Underscore и пока что два вопроса:
0)
if (length === +length) {
//...
}

Насколько я понимаю, поскольку метод _.each() итерируется и по свойствам объекта, то проверяется наличие length и его корректность.
То есть в случае объекта мы получим:
undefined === NaN

что не позволит выполниться этой ветке условного оператора.
Возможно, это можно сделать по другому, насколько такой метод корректен, ведь:
var obj = {
  a: 100,
  // не является зарезервированным словом, ничто не мешает, кроме здравого смысла, это использовать
  length: 1
},
len = obj.length; // в Underscore length = obj.length;
len === +len; // true, пошли итерироваться как по массиву!


1)
var length = (keys || obj).length,
        results = Array(length);

Насколько может быть целесообразно аллоцировать необходимое под массив место при инициализации через конструктор?

Спасибо всем.

Последний раз редактировалось y0uix, 12.01.2015 в 15:54.
Ответить с цитированием
  #2 (permalink)  
Старый 12.01.2015, 15:47
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

0. Попробуйте вызвать each с вашим объектом и узнаете насколько корректно underscore обрабатывает это.
Ответить с цитированием
  #3 (permalink)  
Старый 13.01.2015, 15:04
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Это аналог
typeof length === 'number'
, только заодно отфильтровывает NaN.

Возможно это связано с необходимостью вернуть массив ожидаемо размера даже в случае возникновения исключения чтобы код продолжил работать корректно. Современные JS движки оптимизированы под такие особенности. Если значение не присвоено, то память не выделяется. Так что этим можно пользоваться.
Ответить с цитированием
  #4 (permalink)  
Старый 18.01.2015, 17:43
Интересующийся
Отправить личное сообщение для y0uix Посмотреть профиль Найти все сообщения от y0uix
 
Регистрация: 22.10.2013
Сообщений: 11

Спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
способы оптимизации jquery Arkinsstoun jQuery 7 14.01.2014 13:42
AJAX динамическая подгрузка страниц и скрипт для поисковой оптимизации сайта gumapumba AJAX и COMET 0 17.12.2013 12:46
хотел как лучше, а получилось как всегда. Вопрос оптимизации 9xakep Общие вопросы Javascript 13 21.01.2013 17:27
Помощь недоламеру в оптимизации кода Cooleraunt Javascript под браузер 4 11.01.2013 14:05
Нужна помощь в оптимизации нагруженного скрипта antibot Элементы интерфейса 0 31.10.2011 17:45