Я разрабатываю приложение, и мне не нужно беспокоиться об Internet Explorer, и я изучал некоторые функции, присутствующие в браузерах класса A +, которых нет в Internet Explorer1.
Одна из этих функций, с которой я хотел поиграть, - ключевое слово let в JavaScript.
Кажется, я не могу заставить работать ни один из их примеров let в Firefox 3.6 ( строка User-Agent : Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.9.2) Gecko / 20100115 Firefox / 3.6 (.NET CLR 3.5.30729)). Я получаю SyntaxError: missing ; before statement
при исполнении let foo = "bar"
.
Итак, какие браузеры поддерживают ключевое слово let? (Или я что-то не так делаю?)
javascript
firefox
firefox3.6
Дэвид Мердок
источник
источник
let
поддержки в их жалком браузере.let
ключевое слово ES2015 (также известное как «ES6») , но на момент написания этой статьи поддержка в некоторых кругах является довольно новой (например, только iOS 10 Safari).Ответы:
РЕДАКТИРОВАТЬ :
let
иconst
поддерживаются всеми современными браузерами и являются частью ECMAScript 2015 (ES6) спецификации .В основном, если вам не нужно поддерживать что-либо ниже IE11,
let
иconst
безопасно использовать в настоящее время.В IE11 есть небольшая особенность:
let
при использовании сfor
циклами переменная не привязана кfor
блоку, как вы ожидали, она ведет себя какvar
же ...См. Также: let и const support.
Старый и устаревший ответ 2010 года: эти расширения не являются стандартом ECMA, они поддерживаются только реализацией Mozilla.
В среде браузера вы должны включить номер версии JavaScript в свой
script
тег, чтобы использовать его:<script type="application/javascript;version=1.7"> var x = 5; var y = 0; let (x = x+10, y = 12) { alert(x+y + "\n"); } alert((x + y) + "\n"); </script>
источник
let
ключевое слово в настоящее время в 6 (проект) стандарта ECMAScript.--harmony
.;version=1.7
еще требуется в Firefox? Я попробовалlet
в консоли, и это сработало.По состоянию на апрель 2017 г .:
Все современные основные браузеры, такие как Chrome, Firefox и Edge, поддерживают
let
ключевое слово ES2015 (также известное как «ES6») .iOS Safari не поддерживал
let
до OS 10 (например, OS 9 не поддерживала ).Некоторые старые браузеры, такие как IE9-IE11, поддерживают раннюю версию,
let
но не поддерживают семантику, определенную ES2015 (особенно в отношении объявлений в заголовкахfor
циклов). Так что это не синтаксическая ошибка, и переменная объявляется, но работает не так, как предполагалось. Например, в правильной реализации следующие журналы 0, 1 и 2; в IE9-IE11 он регистрирует 3, 3, 3:Показать фрагмент кода
for (let i = 0; i < 3; ++i) { setTimeout(function() { console.log(i); }, i * 100); }
Устаревшие браузеры, такие как IE8, его вообще не поддерживают.
источник
Существует частичная поддержка в Internet Explorer 11 (
for
неверная область действия ) и полная поддержка во всех текущих браузерах ( таблица совместимости ECMAScript 6: let ).источник
let
ключевое слово (в том смысле, что он не генерирует aSyntaxError
), его реализация не соответствует спецификации - переменная не имеет должной блочной области видимости. (также обратите внимание, что нет и никогда не будет IE после 11)Internet Explorer и Opera не поддерживают
let
ни в одной из версий браузеров, Firefox с версии 2.0 и Safari с версии 3.2.См. Эту таблицу версий JavaScript в Википедии.
Я только что узнал, что вам нужно определить, используете ли вы JavaScript 1.7 или нет. Итак, ваш код будет:
<script type="application/javascript;version=1.7"> ... </script>
источник
По-видимому, Internet Explorer 10 в режиме Edge поддерживает
let
, согласно информации о версии JavaScript .источник
Прошло много времени с тех пор, как этот вопрос был задан впервые: ключевые слова let и const были введены в ECMAScript 2015 (ES6). Найдите 'let' или 'const' в этой удивительной таблице совместимости с ES6: https://kangax.github.io/compat-table/es6/
источник
Просто обновление: Chrome теперь поддерживает,
let
но только если вы объявите"use strict"
; директива.источник