Какие браузеры в настоящее время поддерживают ключевое слово "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);
      }
     

Ответ 4

Internet Explorer и Opera не поддерживают let в любой версии браузера Firefox с версии 2.0 и Safari с 3.2.

Смотрите таблица версий JavaScript в Википедии.

Я только что узнал, что вам нужно определить, используете ли вы JavaScript 1.7 или нет. Таким образом, ваш код будет:

<script type="application/javascript;version=1.7"> ... </script>

Ответ 6

Прошло много времени с тех пор, как был задан этот вопрос: ключевые слова "let" и "const" были введены в ECMAScript 2015 (ES6). Найдите "let" или "const" в этой удивительной таблице совместимости ES6: https://kangax.github.io/compat-table/es6/

Ответ 7

Просто обновление: теперь Chrome поддерживает let, но только если вы объявите "use strict"; директива.