Стандарт ECMA-262, 3я редакция
© Ecma International 1999. Перевод стандарта ECMA-262, 3rd edition 1999.
Данный перевод является официальным и согласован с ECMA.
Краткая история
Этот стандарт ECMA основан на нескольких технологиях, самые известные из которых - JavaScript (Netscape) и JScript (Microsoft). Язык был изобретен Brendan Eich в Netscape и впервые появился в браузере этой компании Navigator 2. В дальнейшем он присутствовал во всех браузерах от Netscape и всех - от Microsoft, начиная с Internet Explorer 3.0, и так - до наших дней.
Разработка этого стандарта началась в ноябре 1996г. Первая редакция стандарта ECMA была принята общим собранием ECMA в июне 1997г.
Стандарт ECMA был отослан в ISO/IEC JTC 1 для быстрого согласования и одобрен как международный стандарт ISO/IEC 16262 в апреле 1998г. В июне 1998 года общее собрание ECMA одобрило вторую редакцию ECMA-262, чтобы поддерживать соответствие с ISO/IEC 16262. Изменения между первой и второй редакцией - по сути редакторские правки.
Настоящий документ описывает третью редакцию стандарта и включает в себя мощные регулярные выражения, улучшенную поддержку строк, новые управляющие конструкции, обработку исключений try/catch, конкретизированное определение ошибок, форматирование при численном выводе и небольшие изменения для приближающейся интернационализации и будущего роста языка.
Работа над языком не завершена. Технический комитет работает над значительными улучшениями, включая механизмы для создания и использования скриптов в интернет и улучшенную координацию с другими разработчиками стандартов, такими как группы в консорциуме W3C и Wireless Application Protocol Forum.
Этот стандарт был принят как 3-я редакция ECMA-262 общим собранием ECMA в декабре 1999 года.
Спецификация ECMA. Содержание
-
. Сфера применения . Соответствие . Ссылки
4. Общее описание
-
Скрипты для Web
4.2 Общее описание языка
-
Объекты
-
Тип Элементарное значение Объект Конструктор Прототип Встроенные объекты Встроенный объект Объект среды Неопределённое значение Неопределённый тип Пустое значение Тип Null Булевское значение Тип Boolean Объект Boolean Строковое значение Тип String Объект String Численное значение Тип Number Объект Number Бесконечность NaN
-
5.1 Синтаксические и лексические грамматики
-
Контекстно-свободные грамматики Лексические и регулярные грамматики Численная строковая грамматика Синтаксическая грамматика Нотация грамматики
-
Символы форматирования Юникода Пробел Разделители строк Комментарии
7.5 Токены
-
Зарезервированные слова Ключевые слова Слова, зарезервированные для будущего использования
-
Литералы Null Булевские литералы Числовые литералы Строковые литералы Литералы регулярных выражений
-
Правила автоматической вставки точек с запятыми Примеры автоматической вставки точек с запятой
-
Тип Undefined Тип Null Тип Boolean Тип String Тип Number
8.6 Тип Object
-
Атрибуты свойства Внутренние свойства и методы
-
ПолучитьЗначение(V) ЗаписатьЗначение(V, W)
-
ToPrimitive ToBoolean
9.3 ToNumber
-
ToNumber применённый к типу String
-
ToString применённый к типу Number
-
10.1 Определения
-
Объекты типа Function Типы исполняемого кода Инициализация переменных Иерархия областей видимости и разрешение идентификаторов Глобальный объект Объект активации This Объект аргументов
-
Глобальный код Eval-код Код функции
-
11.1 Первичные выражения
-
Ключевое слово this Ссылка на идентификатор Ссылка на литерал Инициализатор массива Инициализатор объекта Оператор группировки
-
Доступ к свойствам Оператор new Вызовы функций Списки аргументов Выражения функций
-
Постфиксный оператор инкремента Постфиксный оператор декремента
-
Действие оператора * Действие оператора / Действие оператора %
-
Оператор сложения ( + ) Оператор вычитания ( - ) Действие аддитивных операторов ( +, - ) в применении к объектам типа Number
-
Оператор сдвига влево ( << ) Оператор знакового сдвига вправо ( >> ) Оператор беззнакового сдвига вправо ( >>> )
-
Оператор меньше-чем ( < ) Оператор больше-чем ( > ) Оператор меньше или равно ( <= ) Оператор больше-или-равно ( >= ) Абстрактный алгоритм сравнения для отношений Оператор instanceof Оператор in
-
Оператор равенства ( == ) Оператор не-равно ( != ) Абстрактный алгоритм сравнения для равенств Оператор строгого равенства ( === ) Оператор строгого неравенства ( !== ) Алгоритм сравнения строгого равенства
-
Простое присваивание ( = ) Составное присваивание ( op= )
-
Блок Выражение переменной Пустая инструкция Инструкция-выражение Инструкция if Инструкции итерации Инструкция do-while Инструкция while Инструкция for Инструкция for-in Инструкция continue Инструкция break Инструкция return Инструкция with Инструкция switch Инструкции с метками Инструкция throw Инструкция try
-
13.1 Определения
-
Тождественные правила грамматики Объединённые объекты
-
[[Call]] [[Construct]]
-
15.1 Глобальный объект
-
Свойства-значения глобального объекта Свойства-функции глобального объекта Свойства-функции для обработки URI Свойства-конструкторы глобального объекта Другие свойства глобального объекта
-
Вызов конструктора Object как функции Конструктор Object Свойства конструктора Object Свойства объекта-прототипа Object Свойства экземпляров Object
-
Вызов конструктора Function как функции Конструктор Function Свойства конструктора Function Свойства объекта-прототипа Function Свойства экземпляров Function
-
Вызов конструктора Array как функции Конструктор Array Свойства конструктора Array Свойства объекта-прототипа Array Свойства экземпляров Array
-
Вызов конструктора String как функции Конструктор String Свойства конструктора String Свойства объекта-прототипа String Свойства экземпляров String
-
Вызов конструктора Boolean как функции Конструктор Boolean Свойства конструктора Boolean Свойства объекта-прототипа Boolean Свойства экземпляров Boolean
-
Вызов конструктора Number как функции Конструктор Number Свойства конструктора Number Свойства объекта-прототипа Number Свойства экземпляров Number
-
Свойства-значения объекта Math Свойства-функции объекта Math
-
Общие сведения об объектах типа Date и определения внутренних операторов Вызов конструктора Date как функции Конструктор Date Свойства конструктора Object Свойства объекта-прототипа Date Свойства экземпляров Date
-
Шаблоны Семантика шаблонов Вызов конструктора RegExp как функции Конструктор RegExp Свойства конструктора RegExp Свойства объекта-прототипа RegExp Свойства экземпляров RegExp
-
Вызов конструктора Error как функции Конструктор Error Свойства конструктора Error Свойства объекта-прототипа Error Свойства экземпляров Error Встроенные типы ошибок, использованные в данном стандарте Структура объекта типа NativeError
хм, я в js нубяра(( поэтому Х что пойму. но исправлюсь и тогда оставлю более информационносодержащий камент)
Умоляю, сделайте многостраничный PDF, чтобы был всегда рядом в смартфоне и на досуге можно было бы почитать или залезть как в справочник.
Материал хороший. Но хотелось бы видеть его в pdf или другом виде. Просто доступ в Интернет не всегда есть под рукой.
Благодарю Вас за этот труд! Очень полезное чтение, проясняет лучше некуда. ---------------------------------------- window.open(window.location);
Спасибо огромное авторам перевода.
Благодарю за портабл версию =)
"этот комментарий анонима" Здесь не зарегистрирован. Вы еще карательные операции проводите что ли .
Да, насчет ссылок погорячился, большинство работает. Может с первого раза попались нерабочие, но 11.13.2 точно не работает, вроде еще были.
"Пдф читабельный" Я и не утверждал обратного, прочитать можно.
"Перевод счёл очень качественным" Как Вы думаете, приведенная ниже часть текста написана по-русски? Т.е. не просто кириллицей с использованием слов русского языка.
11.9.2 Оператор не-равно ( != )
Значение нетерминала ВыражениеРавенства : ВыражениеРавенства != ВыражениеОтношения вычисляется по следующей схеме:
1. Вычислить ВыражениеРавенства.
2. Вызвать ПолучитьЗначение(Результата(1)).
3. Вычислить значение ВыраженияОтношения.
4. Вызвать ПолучитьЗначение(Результата(3)).
5. Выполнить сравнение Результат(4) == Результат(2) (см. раздел 11.9.3).
6. Если Результат(5) равен true - вернуть false. Иначе вернуть true.
А вообще, смысл всего выше написанного в том, что если уж решили потратить время на перевод, то можно было подойти к этому делу более ответственно. Тем более что: "Данный перевод является официальным и согласован с ECMA".
> Как Вы думаете, приведенная ниже часть текста написана по-русски? Т.е. не просто кириллицей с использованием слов русского языка.
Это технический перевод алгоритмов, много специальных внутренних терминов, названий свойств. Оформлять такой перевод художественно (понятно) - преступление. К слову, оригинальный текст не менее сложен.
Это - адекватный перевод оригинального текста. Именно адекватный, в смысле, принятом у проф. переводчиков.
Выделенный вами отрывок текста переведен очень грамотно. Не хуже перевода Д. Кнута от издательства "Мир".
Компиляторы-трансляторы. нормально все написано, кто не поймет, вернется к статье позже, для людей с методом роботы копипаст, статья возможно не подойдет, для тех кто варит, не по памяти, а реально оказавшись в ситуации - все нормально!
Ты что тут гузло раскрыл, Вали нах..р отсюда, дубила кусок. Если твой черепаший мозг не способен прочитать алгоритм действий операторов, иди трусы стирай в прачечной. АФФтарам транслита ГРОМАДНЫЙ РЕСПЕКТ. На таких как Вы и держится мир "ПРОГЕРОВ". Честь и хвала Вам ребят.-)
"Этот стандарт ECMA основан на нескольких технологиях, самые известные из которых - JavaScript (Netscape) и JScript (Microsoft)." - а не наоборот?
Не наоборот. Сначала появились языки, за ними стандарт.
Возможно использование двух форма порядка. 1. Хронологическая (кто появился первый, кто позже, кто последний); 2. Проблемно-ориентационная (перечисление по необходимости).
UPDATE: свежая оффлайн-версия. Формат CHM вместо PDF по многочисленным просьбам.
Пожалуйста, выкладывайте так же и PDF, если вам не трудно :-)
Может, посоветуете конвертер из CHM в PDF ?
где сам chm то? удалось скачать пдф, но для быстрой навигации он менее удобен
нашёл, прошу прощения =)
Спасибо. очень нужный перевод.
Собираюсь включить переработанную (адаптированную/упрощенную/приглаженную) версию данного описания в комплект документации QtScript-фреймворка QDroid в одном из следующих релизов. Обратная ссылка будет присутствовать в обязательном порядке.
PS: QtScript - это скриптовый язык основанный на ECMA-262 (с некоторыми дополнениями) для использования в программах написанных с использованием библиотеки QT и C++.
PPS: ещё раз спасибо авторам за перевод.
UPDATE: оффлайн версия 1.1
Хороший перевод. Чертовски хороший перевод, хотя некоторые "индивидуумы", теоретически со мной могут не согласиться, ввиду неприятия подобного языка изложения. Но у меня для них есть сюрприз - в оригинале такой же язык изложения. )) В общем - респект. Все в одном месте. Это здорово))). Буду использовать как шпаргалку - таки всего не упомнишь, да и не надо оно до поры до времени, зачастую.
Не подскажете, 5-я редакция сильно отличается от данного перевода?
Подскажите пожалуйста, что означает такая конструкция кода: rocket.params = , borders: > rocket.params - это объект, а direction, borders - это его свойства?
что за подлость? и зачем мне в линуксе и моей читалке chm? верните pdf, или хотя бы выкладывайте оба варианта! =(
А есть где-то перевод 5ой редакции?
Пятая редакция вышла, а вот перевода нету. Когда же? и желательно в pdf бы.
HTML Parser napishite, i sami v pdf vsio zagonite
Данный перевод является официальным и согласован с ECMA
Илья, это вы переводили эту документацию на русский?
The ECMA-262 standard, the third version you share is quite detailed and easy to understand. 3rd version with lots of great new features. I appreciate this new version. fnaf world