Какие браузеры в настоящее время поддерживают ключевое слово «let» в JavaScript? - PullRequest
65 голосов
/ 01 марта 2010

Я занимаюсь разработкой приложения, и мне не нужно беспокоиться об Internet Explorer, и я искал некоторые функции браузеров класса А +, которых нет в Internet Explorer1.

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

Я не могу заставить их Firefox 3.6 ( User-Agent строка) использовать Mozilla / 5.0 (Windows; U; Windows NT 5.1; en-US; версия 1.9.2) Gecko / 20100115 Firefox / 3.6 (.NET CLR 3.5.30729)). Я получаю SyntaxError: missing ; before statement при выполнении let foo = "bar".

Итак, какие браузеры поддерживают ключевое слово let? (Или я что-то не так делаю?)

Ответы [ 7 ]

37 голосов
/ 01 марта 2010

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>
24 голосов
/ 06 апреля 2017

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

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

  • 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, вообще не поддерживают его.

24 голосов
/ 25 августа 2013

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

12 голосов
/ 01 марта 2010

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

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

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

<script type="application/javascript;version=1.7"> ... </script>
6 голосов
/ 08 июля 2013

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

3 голосов
/ 10 июня 2016

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

2 голосов
/ 08 июня 2015

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

...