Pull to refresh

Comments 34

>>> [ 0 for ( i in 100 ) ];
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

в firebug работает только эта конструкция. я понимаю, что примеры нужно запускать из внешнего файла. вопрос в другом: почему эта конструкция вообще работает в дефолтном js, возвращая список из 23-х нулей?
ff 3.6.13

>>> [ 0 for ( i in 100 ) ];
[0, 0, 0, 0, 0, 0, 0, 0]
<script type="application/javascript;version=1.8">
Number.prototype.__iterator__ = function() {
    for ( let i = 0; i < this; i++ ) {
        yield i;
    }
};

alert([ i for ( i in 5 ) ]); // 0,1,2,3,4
</script>
Что именно вас смущает, число 23?

for (var i in 100) console.log(i);
Посчитайте количество значений полей объекта-обёртки Number(100).
UFO just landed and posted this here
Они бы лучше нормальную спецификацию написали для итерации по атрибутам
code.google.com/p/v8/issues/detail?id=164

З.Ы. я так и не понял, автор мальчик или девочка
Статью написал мальчик, перевела девочка. не?
перевела мисс Хабрахабр-2010, ежлифчо.
нормальная спецификация и сейчас есть.

оператор fir...in не гарантирует ничего, это написано чёрным по белому в спецификации ES.

а те, кто рассчитывает на поведение конкретных реализаций — редкостные мудаки, и вообще «вон из профессии!»
>не гарантирует ничего
именно это и плохо

>кто рассчитывает на поведение конкретных реализаций
нахрена тогда вообще спецификации, если на них не рассчитывать

а дублировать данные только для того чтобы «быть в профессии» я не хочу,
уж лучше быть мудаком, но писать красивый код
прочитал «реализаций» как «спецификаци», ну да ладно

в любом случае хороший пример того, как конкретная реализация таки пропихнулась в спецификацию

box-sizing: content-box

лучше позно чем никогда
1. спецификации на SQL базы данных тоже не гарантируют порядок возвращённых строк в селкте, если нет ORDER BY или других сортировочных подсказок.
Однако, в зависимости от реализации и других условий можно получить их или в порядке вставки или по первичному ключу.
Что, стандарт SQL-92 в топку?

2. хэш-мапы в других языках тоже не гарантируют порядка возвращаемых значений. тоже в топку?

3. обычно данных надо дублировать не много (только сортированные индексы). если у вас возникает потребность дублировать ещё и данные, то у вас или плохая архитектура или кривые руки.
1. в том то и проблема что нет аналога «order by» для итераторов
2. LinkedHashMap — Hash table and linked list implementation of the Map interface, with predictable iteration order
3. Зачем?
В отличии от js, где реализация окружения зависит от клиентского браузера, при работе с sql не нужно каждый раз определять тип, версию и прочие тонкости.
всё питонственнее и питонственнее…
следует довести эту мысль до логического финала и встроить уже, наконец, пайтон
Остается только мечтать :)
Это прекрасно же.
былобы.
еслиб не моментик, обозначенный в следующем комменте.
It should be noted that the only browser that supports ‘JavaScript’ are Mozilla-based ones. However, all modern browsers support a version of ECMAScript – at least version 3. JavaScript 1.6-1.9 are just code names for the interim versions of ECMAScript (JavaScript on Gecko) that are leading up to JavaScript 2.0 (ECMAScript 4). Of course no other browser will support another JavaScript 1.6-1.9, since they aren’t obligated to support JavaScript.
Versions of JavaScript
John Resig, JavaScript Tool Developer for the Mozilla Corporation

Так что не удивительно, что
все эти вкусности не поддерживает даже Chrome (что уж говорить об IE?), а только Firefox 3+,
если учитывать, что за разработку JavaScript отвечает Mozilla Foundation.

В сущности, сейчас не очень понятно, к чему приведут все эти телодвижения и что в итоге и в каком виде войдет в следущую версию спецификации. Актуальная на сегодня версия ECMAScript-262 — 5я редакция. А для нововведений от Mozilla пока, к сожалению, нет стандарта, на который можно было бы ориентироваться.
Не говоря уже о том, что эти нововведения вообще необязательно соответствуют развитию ECMAScript.
Есть у кого таблица «браузер — версия js-движка»?
Так JavaScript полноценно поддерживается только мозиллой. В остальных браузерах лишь гарантируется совместимость со стандартом ECMA-262 и есть частичная поддержка более свежих версий стандарта (например, в движке V8 реализовано немало фич из ECMAScript 5). В IE так вообще используется отдельный диалект — JScript.
JavaScript является торговой маркой Oracle и используется Mozilla Foundation по лицензии.

JScript в IE9 соответствует спецификации ECMAScript5.
Спасибо, кэп. Как это противоречит тому, что я написал?
Я намекал на то, что сам вопрос Pozadi поставлен некорректно. Нужно искать не таблицу «браузер — версия js-движка», а таблицу соответствия браузера и версии стандарта ECMA, и даже более того — поддержки конкретным браузером определенных фич из редакции стандарта.

Вот пример такой таблицы для ECMAScript5.
Непонятно, что означает отдельный диалект. Есть стандарт и его реализация в различных браузерах.

А вот реализация в Firefox с дополнительными плюшками — это как раз дополнительный диалект, добавляющий свой собственный словарь.
Есть стандарт ECMA, а есть язык ECMAScript, реализованный строго в соответствии с этим стандартом.
Сам ECMAScript является сферическим языком в вакууме и хранится в Палате мер и весов )

Языки JavaScript и JScript являются его диалектами и имеют каждый свои плюшки, не описанные в спецификации ECMA.
ECMA — это организация. Стандарта ECMA не существует. ECMA-262 — это стандарт. языка ECMASCript. JavaScript и JScript — его реалиации.

JavaScript 1.8.x — заметно выходит за рамки 3й и 5й редакций ECMA-262. Это не плохо, но на него, к сожалению, нельзя ориентироваться на практике.
UFO just landed and posted this here
мне кажется что вместо «JavaScript 1.7 и старше» лучше написать «и младше» или «и меньше». А то немного неоднозначно вышло — часто под «старшими версиями» понимаются не возраст, а номер версии.

А в целом писать только под один броузер тяжко — вот бы V8, Оперовский и ИЕ9 движки догнали бы ФФ — вот тогда было бы интересно.

Хотя меня прежде всего интересует поддержка 1.8 в V8 из-за node.js
Хотя меня прежде всего интересует поддержка 1.8 в V8 из-за node.js

Поддерживаю. Там этого ох как не хватает.
Sign up to leave a comment.

Articles