Что такое поддержка кросс-браузера для новых возможностей JavaScript 1.7? В частности, понимание массива и утверждение "let"

https://developer.mozilla.org/en/New_in_JavaScript_1.7

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

for (i = 0; i < arr.length; i++) {
    /* ... */
}

для действительно простых операций? Разве это не будет проще:

[/* ... */ for each (i in arr)]

Я думаю, что краткость - великая вещь. В принципе, в конце концов все сводится к IE.

Поддерживает ли IE эти новые функции? Как насчет других браузеров?

Ответ 1

Нет, когда они говорят "JavaScript", они подразумевают это буквально: механизм ECMAScript, используемый Gecko. JScript и другие двигатели (AFAIK) не поддерживают эти функции.

EDIT: В соответствии с wikipedia, JavaScript 1.7 реализует ECMAScript "Edition 3 плюс все усовершенствования JavaScript 1.6, а также генераторы Pythonic и массивы ( [a * a for (a in iter)]), блокировать область с let, destructuring assign (var [a, b] = [1,2])". Таким образом, эти функции не являются частью ECMAScript.

Ответ 2

Пока этот вопрос немного устарел и помечен как "ответил" - я нашел его в Google, и приведенные ответы могут быть неточными или, если нет, определенно неполными.

Очень важно отметить, что Javascript НЕ СТАНДАРТ. Кен правильно упомянул, что ECMAScript - это кросс-браузерный стандарт, который все браузеры стремятся выполнить, но то, что он не прояснил, заключается в том, что Javascript НЕ является ECMAScript.

Чтобы сказать, что Javascript "реализует" ECMAScript означает, что Javascript включает ECMAScript, а также собственные собственные дополнительные функции без кросс-браузера. Пример for each, представленный Николасом, является примером запатентованной Mozilla, которая не является стандартом и поэтому вряд ли будет принята другими браузерами.

Функции Javascript 1.7 и 1.8 полезны для разработки расширений в XUL, но никогда не должны использоваться для кросс-браузерной разработки - для каких стандартов существуют.

Ответ 3

В дополнение к IE, который не поддерживает его, он выглядит как браузеры на основе веб-сайтов (Safari, Chrome), несмотря на то, что он утверждает, что поддерживает JS 1.7 (фактически выполняет теги script, объявленные как находящиеся в JS 1.7), фактически не поддерживает любая из этих функций, что означает, что на данный момент JS 1.7 с его очень приятными функциями ограничивается только браузерами Geko.

И поскольку Webkit по-прежнему выполняет скрипты с тегами только как 1.7, это также означает, что мы не можем даже сбой изящно, но мы просто создадим синтаксические ошибки в этих браузерах, когда мы используем какие-либо новые ключевые слова или синтаксис.