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

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 ]

33 голосов
/ 05 февраля 2010

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

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

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

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

9 голосов
/ 25 августа 2009

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

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

1 голос
/ 19 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...