Стандарт ECMA-262, 3я редакция
© Ecma International 1999.
Перевод стандарта ECMA-262, 3rd edition 1999.
Данный перевод является официальным и согласован с ECMA.
Скачать оффлайн-вариант в формате CHM
Краткая история
Этот стандарт 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. Содержание
- 1. Сфера применения
- 2. Соответствие
- 3. Ссылки
-
4. Общее описание
- 4.1 Скрипты для Web
-
4.2 Общее описание языка
-
4.3 Определения
-
5. Соглашения о наименованиях
-
5.1 Синтаксические и лексические грамматики
- 5.1.1 Контекстно-свободные грамматики
- 5.1.2 Лексические и регулярные грамматики
- 5.1.3 Численная строковая грамматика
- 5.1.4 Синтаксическая грамматика
- 5.1.5 Нотация грамматики
- 5.2 Соглашения по алгоритмам
- 6. Исходный текст
-
7. Лексические соглашения
- 7.1 Символы форматирования Юникода
- 7.2 Пробел
- 7.3 Разделители строк
- 7.4 Комментарии
-
7.5 Токены
- 7.5.1 Зарезервированные слова
- 7.5.2 Ключевые слова
- 7.5.3 Слова, зарезервированные для будущего использования
- 7.6 Идентификатор
- 7.7 Знаки препинания
-
7.8 Литералы
- 7.8.1 Литералы Null
- 7.8.2 Булевские литералы
- 7.8.3 Числовые литералы
- 7.8.4 Строковые литералы
- 7.8.5 Литералы регулярных выражений
-
7.9 Автоматическая вставка точек с запятыми
- 7.9.1 Правила автоматической вставки точек с запятыми
- 7.9.2 Примеры автоматической вставки точек с запятой
-
8. Типы
- 8.1 Тип Undefined
- 8.2 Тип Null
- 8.3 Тип Boolean
- 8.4 Тип String
- 8.5 Тип Number
-
8.6 Тип Object
- 8.6.1 Атрибуты свойства
- 8.6.2 Внутренние свойства и методы
-
8.7 Тип Reference
- 8.7.1 ПолучитьЗначение(V)
- 8.7.2 ЗаписатьЗначение(V, W)
- 8.8 Тип List
- 8.9 Тип Completion
-
9. Преобразование типов
- 9.1 ToPrimitive
- 9.2 ToBoolean
-
9.3 ToNumber
- 9.3.1 ToNumber применённый к типу String
- 9.4 ToInteger
- 9.5 ToInt32: (Знаковое 32-разрядное целое)
- 9.6 ToUint32: (Беззнаковое 32-разрядное целое)
- 9.7 ToUint16: (Беззнаковое 16-разрядное целое)
-
9.8 ToString
- 9.8.1 ToString применённый к типу Number
- 9.9 ToObject
-
10. Контексты исполнения
-
10.1 Определения
- 10.1.1 Объекты типа Function
- 10.1.2 Типы исполняемого кода
- 10.1.3 Инициализация переменных
- 10.1.4 Иерархия областей видимости и разрешение идентификаторов
- 10.1.5 Глобальный объект
- 10.1.6 Объект активации
- 10.1.7 This
- 10.1.8 Объект аргументов
-
10.2 Вход в контекст исполнения
-
11. Выражения
-
11.1 Первичные выражения
-
11.2 Левосторонние выражения
-
11.3 Постфиксные выражения
- 11.3.1 Постфиксный оператор инкремента
- 11.3.2 Постфиксный оператор декремента
-
11.4 Унарные операторы
-
11.5 Мультипликативные операторы
-
11.6 Синтаксис аддитивных операторов
- 11.6.1 Оператор сложения ( + )
- 11.6.2 Оператор вычитания ( - )
- 11.6.3 Действие аддитивных операторов ( +, - ) в применении к объектам типа Number
-
11.7 Операторы побитового сдвига
- 11.7.1 Оператор сдвига влево ( << )
- 11.7.2 Оператор знакового сдвига вправо ( >> )
- 11.7.3 Оператор беззнакового сдвига вправо ( >>> )
-
11.8 Операторы отношения
- 11.8.1 Оператор меньше-чем ( < )
- 11.8.2 Оператор больше-чем ( > )
- 11.8.3 Оператор меньше или равно ( <= )
- 11.8.4 Оператор больше-или-равно ( >= )
- 11.8.5 Абстрактный алгоритм сравнения для отношений
- 11.8.6 Оператор instanceof
- 11.8.7 Оператор in
-
11.9 Операторы равенства
- 11.9.1 Оператор равенства ( == )
- 11.9.2 Оператор не-равно ( != )
- 11.9.3 Абстрактный алгоритм сравнения для равенств
- 11.9.4 Оператор строгого равенства ( === )
- 11.9.5 Оператор строгого неравенства ( !== )
- 11.9.6 Алгоритм сравнения строгого равенства
- 11.10 Двоичные побитовые операторы
- 11.11 Бинарные логические операторы
- 11.12 Условный оператор ( ?: )
-
11.13 Операторы присваивания
- 11.13.1 Простое присваивание ( = )
- 11.13.2 Составное присваивание ( op= )
- 11.14 Оператор-запятая ( , )
-
12. Инструкции
-
13. Определение функции
-
13.1 Определения
- 13.1.1 Тождественные правила грамматики
- 13.1.2 Объединённые объекты
-
13.2 Создание объектов типа Function
- 14. Программа
-
15. Встроенные объекты ECMAScript
-
15.1 Глобальный объект
- 15.1.1 Свойства-значения глобального объекта
- 15.1.2 Свойства-функции глобального объекта
- 15.1.3 Свойства-функции для обработки URI
- 15.1.4 Свойства-конструкторы глобального объекта
- 15.1.5 Другие свойства глобального объекта
-
15.2 Объекты Object
- 15.2.1 Вызов конструктора Object как функции
- 15.2.2 Конструктор Object
- 15.2.3 Свойства конструктора Object
- 15.2.4 Свойства объекта-прототипа Object
- 15.2.5 Свойства экземпляров Object
-
15.3 Объекты типа Function
- 15.3.1 Вызов конструктора Function как функции
- 15.3.2 Конструктор Function
- 15.3.3 Свойства конструктора Function
- 15.3.4 Свойства объекта-прототипа Function
- 15.3.5 Свойства экземпляров Function
-
15.4 Объекты Array
- 15.4.1 Вызов конструктора Array как функции
- 15.4.2 Конструктор Array
- 15.4.3 Свойства конструктора Array
- 15.2.4 Свойства объекта-прототипа Array
- 15.4.5 Свойства экземпляров Array
-
15.5 Объекты типа String
- 15.5.1 Вызов конструктора String как функции
- 15.5.2 Конструктор String
- 15.5.3 Свойства конструктора String
- 15.5.4 Свойства объекта-прототипа String
- 15.5.5 Свойства экземпляров String
-
15.6 Объекты типа Boolean
- 15.6.1 Вызов конструктора Boolean как функции
- 15.6.2 Конструктор Boolean
- 15.6.3 Свойства конструктора Boolean
- 15.6.4 Свойства объекта-прототипа Boolean
- 15.6.5 Свойства экземпляров Boolean
-
15.7 Объекты типа Number
- 15.7.1 Вызов конструктора Number как функции
- 15.7.2 Конструктор Number
- 15.7.3 Свойства конструктора Number
- 15.7.4 Свойства объекта-прототипа Number
- 15.7.5 Свойства экземпляров Number
-
15.8 Объект Math
- 15.8.1 Свойства-значения объекта Math
- 15.8.2 Свойства-функции объекта Math
-
15.9 Объекты типа Date
- 15.9.1 Общие сведения об объектах типа Date и определения внутренних операторов
- 15.9.2 Вызов конструктора Date как функции
- 15.9.3 Конструктор Date
- 15.9.4 Свойства конструктора Object
- 15.9.5 Свойства объекта-прототипа Date
- 15.9.6 Свойства экземпляров Date
-
15.10 Объекты типа RegExp (регулярные выражения)
-
15.11 Объекты Error
- 15.11.1 Вызов конструктора Error как функции
- 15.11.2 Конструктор Error
- 15.11.3 Свойства конструктора Error
- 15.11.4 Свойства объекта-прототипа Error
- 15.11.5 Свойства экземпляров Error
- 15.11.6 Встроенные типы ошибок, использованные в данном стандарте
- 15.11.7 Структура объекта типа NativeError
- 16. Ошибки
- Приложение A - Описание грамматик
- Приложение B - Совместимость
Дополнительно: Глоссарий англоязычных терминов.
|
хм, я в js нубяра(( поэтому Х что пойму...но исправлюсь и тогда оставлю более информационносодержащий камент)
Умоляю, сделайте многостраничный PDF, чтобы был всегда рядом в смартфоне и на досуге можно было бы почитать или залезть как в справочник.
Материал хороший. Но хотелось бы видеть его в pdf или другом виде. Просто доступ в Интернет не всегда есть под рукой.
Благодарю Вас за этот труд! Очень полезное чтение, проясняет лучше некуда.
----------------------------------------
window.open(window.location);
Спасибо огромное авторам перевода.
Благодарю за портабл версию =)
"этот комментарий анонима"
Здесь не зарегистрирован. Вы еще карательные операции проводите что ли .
Да, насчет ссылок погорячился, большинство работает. Может с первого раза попались нерабочие, но 11.13.2 точно не работает, вроде еще были.
"Пдф читабельный"
Я и не утверждал обратного, прочитать можно.
"Перевод счёл очень качественным"
Как Вы думаете, приведенная ниже часть текста написана по-русски? Т.е. не просто кириллицей с использованием слов русского языка.
А вообще, смысл всего выше написанного в том, что если уж решили потратить время на перевод, то можно было подойти к этому делу более ответственно. Тем более что: "Данный перевод является официальным и согласован с 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 =
{
direction: { 'x': 1, 'y': 1},
borders:
{
'x': document.body.clientWidth - rocket.offsetWidth,
'y': document.body.clientHeight - rocket.offsetHeight
}
}
rocket.params - это объект, а direction, borders - это его свойства?
что за подлость? и зачем мне в линуксе и моей читалке chm? верните pdf, или хотя бы выкладывайте оба варианта! =(
А есть где-то перевод 5ой редакции?
Пятая редакция вышла, а вот перевода нету. Когда же? и желательно в pdf бы...
Данный перевод является официальным и согласован с ECMA
Илья, это вы переводили эту документацию на русский?
Это вся полезная информация ECMA-262 потому что я был так занят игрой в tunnel rush что многое пропустил. мне нравится этот пост