Что такое кросс-браузерная поддержка новых функций 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 поддерживает эти новые функции? А как насчет других браузеров?

3 ответа

Решение

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

РЕДАКТИРОВАТЬ: Согласно википедии, JavaScript 1.7 реализует ECMAScript "Edition 3", плюс все улучшения JavaScript 1.6, плюс генераторы Pythonic и понимания массива ([a*a for (a in iter)]), блокирует область действия с помощью let, разрушая назначение (var [a, Ь]=[1,2])". Таким образом, эти функции не являются частью ECMAScript.

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

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

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

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

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

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

Другие вопросы по тегам