- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
var list = [ ];
// hidden elements
list[ NaN ] = 'this-element-always-is-last'; // max index
list[ Number.MAX_VALUE ] = 'this-is-smallest';
list[ Infinity ] = 'this-just-infinity';
// list.length == 0; // true
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+161
var list = [ ];
// hidden elements
list[ NaN ] = 'this-element-always-is-last'; // max index
list[ Number.MAX_VALUE ] = 'this-is-smallest';
list[ Infinity ] = 'this-just-infinity';
// list.length == 0; // true
Делать нечего в селе, мы сидим навеселе. Всех с пятницей!
Анонимус 15.11.2014 02:05 # 0
Попытка раздуть массив и убить память?
inkanus-gray 15.11.2014 02:53 # 0
AjiTae 15.11.2014 04:47 # 0
P.S. На всякий: комменты к коду чушня.
inkanus-gray 15.11.2014 05:13 # 0
Брат жив. Может быть, это и не массив вовсе получился?
1024-- 15.11.2014 05:52 # +3
P.S. Подобное возникает у меня, когда наивно беру случайный элемент массива
inkanus-gray 15.11.2014 12:11 # +2
wvxvw 15.11.2014 12:59 # +5
Когда мы пытаемся присвоить какое-то значение по ключу, который не переводится в целые, то ключ автоматически переводится в строку, и значение хранится в первой таблице. Поэтому, например, foo["1"] === foo[1].
bot 15.11.2014 14:02 # +1
И таки да: list[ NaN ] === list[ "NaN" ]
А этот тест мне нужен был чтобы однозначно впихнуть в массив элемент ключ которого всегда будет больше всех остальных возможных ключей в этом массиве, поэтому сразу вспомнилось Infinity, ну и так далее...
Qwertiy 16.11.2014 12:53 # 0
guest 18.11.2014 19:09 # 0
wvxvw 18.11.2014 20:47 # 0
Eugene 19.11.2014 10:37 # 0
wvxvw 19.11.2014 20:41 # 0
AjiTae 15.11.2014 14:31 # +1
bot 15.11.2014 14:53 # 0
bormand 15.11.2014 14:56 # +3
P.S. Надо поискать цитату из спеки, где описаны гарантии порядка...
zloirock 15.11.2014 16:44 # +2
zloirock 15.11.2014 16:52 # 0
zloirock 15.11.2014 17:11 # +3
...
For each own property key P of O that is an integer index, in ascending numeric index order
Add P as the last element of keys.
For each own property key P of O that is a String but is not an integer index, in property creation order
Add P as the last element of keys.
...
bormand 15.11.2014 17:16 # 0
AjiTae 15.11.2014 18:48 # +2
inkanus-gray 15.11.2014 22:16 # 0
Опера 12:
for...in... перечисляет числовые ключи, list[NaN], list[Number.MAX_VALUE], list[Infinity].
Array.forEach перечисляет только числовые ключи.
IE9:
for...in... в том же порядке.
Array.forEach отсутствует.
Netscape Navigator 9:
for...in... перечисляет в порядке добавления. Да, числовые и нечисловые вперемешку, числовые не сортируются.
Array.forEach — только числовые по возрастанию индекса.
Konqueror — как в Опере.
Хром — как в Опере.
Firefox: до версии 5 (включительно) — как в Нетскейпе, после версии 29 (включительно) — как в Опере. Точное значение номера версии, на котором произошёл переход, лень искать.
Учитывая, что до сих пор встречаются ценители Fx 3.x, можно поржать.
bot 15.11.2014 17:52 # 0
bormand 15.11.2014 15:07 # +1
The mechanics and order of enumerating the properties (step 6.a in the first algorithm, step 7.a in the second) is not specified.
inkanus-gray 18.11.2014 21:11 # +2
bormand 18.11.2014 23:01 # 0
P.S. Не лень было ставить столько фаерфоксов? Тут даже делением пополам затрахаешься...
inkanus-gray 19.11.2014 00:46 # +2
Я прочитал, что версия 18.0 использует принципиально® новый™ движок IonMonkey, но на 18.0 оказалось всё по-старому. Ближайший выпуск ESR — 24.0, на нём всё оказалось по-новому. А дальше двоичный поиск на интервале (18.0; 24.0).
1024-- 15.11.2014 05:48 # +1