Какова взаимосвязь между ECMAScript 5 и JavaScript 1.8.5 с точки зрения языковых возможностей?

Я читал о продолжении разработки Mozilla JavaScript, вплоть до версии 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 функций.

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

Ответ 1

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

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

Ответ 2

Непосредственно сосредоточиться на 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, которые могут определять для вас общие функциональные методы.

Ответ 3

Я думаю, что ECMAScript является "стандартным", как план, а javascript - это настоящий язык, на котором он основан. Как нравится, как w3c имеет свои стандарты, а затем люди делают (или не делают) создание от него движков рендеринга.

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