Что такое поддержка кросс-браузера для новых возможностей 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, это также означает, что мы не можем даже сбой изящно, но мы просто создадим синтаксические ошибки в этих браузерах, когда мы используем какие-либо новые ключевые слова или синтаксис.