Какие браузеры в настоящее время поддерживают ключевое слово JavaScript 'let'?


Я разрабатываю приложение и никогда не должен беспокоиться о Internet Explorer и изучал некоторые функции, присутствующие в браузерах класса A+, которые не находятся в Internet Explorer1.

одна из этих функций я хотел поиграть с Ключевое слово JavaScript let

Я не могу заставить ни один из их примеров " 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? (Или я делаю что-то не так?)

7 58

7 ответов:

эти расширения не являются стандартными для 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>

существует почти полная поддержка в Internet Explorer ≥ 11 (отсутствует только for scope) и полная поддержка во всех текущих браузерах ( Таблица совместимости ECMAScript 6: let).

по состоянию на апрель 2017:

  • все современные основные браузеры, такие как Chrome, Firefox и Edge поддерживают ES2015 (он же "ES6") let ключевое слово.

  • iOS Safari не поддерживает let до ОС 10 (например, ОС 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 и Опера не поддерживают let в любой версии браузера, Firefox с версии 2.0 и Safari с версии 3.2.

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

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

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

видимо Internet Explorer 10 на края режим поддерживает let на Информация О Версии JavaScript.

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

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