Какие браузеры в настоящее время поддерживают ключевое слово "let" JavaScript?
Я разрабатываю приложение и не должен беспокоиться об Internet Explorer и изучал некоторые функции, присутствующие в браузерах классов A +, которые не находятся в Internet Explorer1.
Одна из этих функций, с которой я хотел поиграть, - ключевое слово JavaScript let
Кажется, я не могу привести примеры своих "let" в Firefox 3.6 (User-Agent string: 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? (Или я делаю что-то не так?)
Ответы
Ответ 1
EDIT: 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>
Ответ 2
По состоянию на апрель 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);
}
Ответ 3
В Internet Explorer 11 есть частичная поддержка ( for
область действия неверна) и полная поддержка во всех текущих браузерах (таблица совместимости ECMAScript 6: let).
Ответ 4
Internet Explorer и Opera не поддерживают let
в любой версии браузера Firefox с версии 2.0 и Safari с 3.2.
Смотрите таблица версий JavaScript в Википедии.
Я только что узнал, что вам нужно определить, используете ли вы JavaScript 1.7 или нет. Таким образом, ваш код будет:
<script type="application/javascript;version=1.7"> ... </script>
Ответ 5
По-видимому Internet Explorer 10 в Edge поддерживает let
, per Информация о версии JavaScript.
Ответ 6
Прошло много времени с тех пор, как был задан этот вопрос: ключевые слова "let" и "const" были введены в ECMAScript 2015 (ES6). Найдите "let" или "const" в этой удивительной таблице совместимости ES6:
https://kangax.github.io/compat-table/es6/
Ответ 7
Просто обновление: теперь Chrome поддерживает let
, но только если вы объявите "use strict"
; директива.