Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Максимально короткий перебор двух NodeList-ов (https://javascript.ru/forum/misc/19342-maksimalno-korotkijj-perebor-dvukh-nodelist-ov.html)

Lexi 02.08.2011 12:44

Максимально короткий перебор двух 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 не подходит из-за совместимости, вынос в функцию получится сильно длинее.

Sweet 02.08.2011 12:51

Нормально - оставляй так.

Lexi 02.08.2011 23:04

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

monolithed 02.08.2011 23:56

Цитата:

Сообщение от Lexi
Ещё хотелось бы уяснить, нужны ли скобки в "u[-i--]"

нужны

Sweet 03.08.2011 00:25

Цитата:

Сообщение от monolithed
нужны

Зачем?

monolithed 03.08.2011 08:36

Цитата:

Сообщение от Sweet
Зачем?

хм. так не отработает u-i--

Octane 03.08.2011 08:49

Цитата:

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

В смысле так:
u[-(i--)]

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

monolithed 03.08.2011 09:41

Цитата:

Сообщение от Octane
В смысле так:
u[-(i--)]

долго вглядывался, не мог найти разницу, до и после компрессора))

Lexi 03.08.2011 11:38

Цитата:

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

Цитата:

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

trikadin 03.08.2011 19:24

А кстати... Есть где-нибудь нормальная таблица приоритетов операторов в JS? Или она примерно совпадает с какой-нибудь сиплюсплюсной?


Часовой пояс GMT +3, время: 02:24.