Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2011, 12:44
Интересующийся
Отправить личное сообщение для Lexi Посмотреть профиль Найти все сообщения от Lexi
 
Регистрация: 14.03.2009
Сообщений: 29

Максимально короткий перебор двух NodeList-ов
Я склоняюсь к такому варианту, но возможно есть лучший?
var e, d = w.document, t = d.getElementsByTagName('textarea'), u = d.getElementsByTagName('input'), i = t.length;
while(e = (i > 0) ? t[--i] : u[-i--]){}


//querySelectorAll не подходит из-за совместимости, вынос в функцию получится сильно длинее.

Последний раз редактировалось monolithed, 02.08.2011 в 18:34.
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2011, 12:51
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Нормально - оставляй так.
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2011, 23:04
Интересующийся
Отправить личное сообщение для Lexi Посмотреть профиль Найти все сообщения от Lexi
 
Регистрация: 14.03.2009
Сообщений: 29

Ещё хотелось бы уяснить, нужны ли скобки в "u[-i--]", UglifyJS их добавляет...
Ответить с цитированием
  #4 (permalink)  
Старый 02.08.2011, 23:56
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Lexi
Ещё хотелось бы уяснить, нужны ли скобки в "u[-i--]"
нужны
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2011, 00:25
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от monolithed
нужны
Зачем?
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2011, 08:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Sweet
Зачем?
хм. так не отработает u-i--
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2011, 08:49
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от Lexi
Ещё хотелось бы уяснить, нужны ли скобки в "u[-i--]", UglifyJS их добавляет...
В смысле так:
u[-(i--)]

?
Нет, не нужны.
И в тернарном операторе еще можно убрать
while(e = i ? t[--i] : u[-i--]){}

Последний раз редактировалось Octane, 03.08.2011 в 09:55.
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2011, 09:41
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Octane
В смысле так:
u[-(i--)]
долго вглядывался, не мог найти разницу, до и после компрессора))
Ответить с цитированием
  #9 (permalink)  
Старый 03.08.2011, 11:38
Интересующийся
Отправить личное сообщение для Lexi Посмотреть профиль Найти все сообщения от Lexi
 
Регистрация: 14.03.2009
Сообщений: 29

Цитата:
В смысле так:
u[-(i--)]
Нет, не нужны.
Ясно спасибо, а то у меня были некоторые сомнения, т.к. в префиксной форме декремента скобки (или пробел) нужны (хотя в этом случае, дело видимо в двусмысленности - три ли это минуса или минус и декремент).

Цитата:
И в тернарном операторе еще можно убрать
while(e = i ? t[--i] : u[-i--]){}
Скобки там необязательны, да. А вот сравнение необходимо, иначе результат будет браться из другого NodeList-а.

Последний раз редактировалось Lexi, 03.08.2011 в 12:06.
Ответить с цитированием
  #10 (permalink)  
Старый 03.08.2011, 19:24
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

А кстати... Есть где-нибудь нормальная таблица приоритетов операторов в JS? Или она примерно совпадает с какой-нибудь сиплюсплюсной?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



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

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