Какова взаимосвязь между ECMAScript 5 и JavaScript 1.8.5 с точки зрения языковых возможностей? - PullRequest
13 голосов
/ 04 февраля 2011

Я читал о продолжающемся развитии JavaScript в Mozilla, начиная с версии 1.8.5: https://developer.mozilla.org/en/JavaScript.

Мой вопрос: какова взаимосвязь между JavaScript 1.8.5+ и ECMAScript 5+?с точки зрения языковых особенностей?Есть ли шанс, что новые функции JavaScript в Mozilla (например, генераторы, массивы и т. Д.) Станут частью ECMAScript?

Я просто хочу узнать, стоит ли изучать функции JavaScript 1.8.5 (и работать над этим)их в не поддерживающие браузеры) или я должен забыть JS 1.8.5 и сосредоточиться на изучении / освоении новых функций ECMAScript 5.

К вашему сведению: Mozilla рассказывает о том, как они планируют привести JavaScript в соответствие сECMAScript 5 здесь: https://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla

Ответы [ 3 ]

15 голосов
/ 04 февраля 2011

JavaScript 1.8.5 - это реализация ECMAScript от Mozilla с дополнительными функциями.Это расширенный набор спецификации ECMAScript (и текущих реализаций, таких как IE, Chrome и Opera).Mozilla выдвигает на первый план функции, которые она добавляет в свой собственный браузер, они могут или не могут превратить его в ECMA.Обратите внимание, что Mozilla является членом W3C и имеет некоторые права голоса, но я предполагаю, что большинство функций этого не сделают.

Итог Не используйте его, если вы некодирование чего-то определенного для Firefox, расширений FF, приложений XUL, Rhino (добавлено Rhino благодаря @Raynos)

3 голосов
/ 04 февраля 2011

вызывающе сосредоточиться на ES5.Проблема с функциями 1.7 и 1.8 заключается в том, что они изменяют синтаксис языка, поэтому вы не можете втиснуть их в другой код.

Вы можете эмулировать все свойства объекта с ES5, но вы не можете эмулироватьключевое слово let.В других браузерах различные выражения просто недопустимы в javascript.

Вы должны различать создание дополнения к нативному коду, что и делает большинство ES5, и изменение синтаксиса javascript, как это делают 1.7 и 1.8.

Существует использование для 1.7& 1.8, которая должна быть разработана для платформы RHINO.Но для браузера javascript придерживаться спецификации.

По общему признанию, многократное возвращение значений - довольно приятная особенность.Было бы неплохо иметь такое присвоение массива

function() f {
     return [1,2,3];
}

[a,b,c] = f()

Но другие функции являются довольно существенными изменениями в синтаксисе, и вы просто не можете протолкнуть их через ecmascript, они просто не справятся с этим.Небольшие изменения, как указано выше, возможно, вы сможете получить в ES6, но вам придется подождать не менее года.

Так что реально не ожидайте, что обучение окупится за год или два, если вообще будет.Скорее всего, это не окупится.Посмотрите на библиотеки, такие как underscore.js , которые могут определить общие методы функциональных утилит для вас.

0 голосов
/ 04 февраля 2011

Я думаю, что ECMAScript - это «стандарт», как проект, а javascript - это язык, на котором он базируется. Вроде как у w3c есть свои стандарты, и тогда люди делают (или не делают) движки рендеринга на его основе.

Итак, в основном, чтобы ответить на ваш вопрос, посмотрите на ECMAScript, чтобы увидеть, что такое консенсус, как «должен» работать javascript, но вы должны сосредоточиться на javascript, потому что это то, с чем вы на самом деле будете кодировать.

...