Существуют ли основные браузеры, которые не сохраняют порядок вставки в объект JavaScript? - PullRequest
8 голосов
/ 26 мая 2011

Могу ли я зависеть от следующего кода предупреждения b до a?

var x = {}
x['b'] = 1
x['a'] = 0
for(var i in x) {
    alert(i)
}

Ответы [ 2 ]

7 голосов
/ 26 мая 2011

Существуют ли какие-либо основные браузеры, которые не сохраняют порядок вставки в объекте JavaScript?

По крайней мере один крупный браузер делал это до недавнего времени (я думаю, что механизм V8 не сохранял порядок).

Могу ли я рассчитывать на следующее предупреждение кода b перед a?

Нет.В спецификации сказано, что порядка нет.

4 голосов
/ 26 мая 2011

Для движка V8 JavaScript, используемого в Google Chrome, состоялось аналогичное обсуждение:

http://code.google.com/p/v8/issues/detail?id=164

Лучше не полагаться на недокументированные функции. И если вы используете цифры в качестве ключей, это, безусловно, идет не так.

Например, это работает в некоторых браузерах:

var x = {}
x['b'] = 1
x['2'] = 20
x['a'] = 0
x['1'] = 10
for(var i in x) {
    alert(x[i])
}

Кстати, это alert(x[i]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...