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

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

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

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


person David Murdoch    schedule 01.03.2010    source источник
comment
Хотя вы понимаете и соглашаетесь с тем, что ваше «не заботится о том, работает ли он» в IE, вы должны учитывать, что ключевое слово let предназначено только для Mozilla, поэтому даже если можно сказать, что IE не поддерживает его, как правильно это сказать , только бы mozilla его поддерживает. Точно так же, как мы избегаем тегов или ключевых слов только для IE, вам следует избегать ключевых слов и *.   -  person WhyNotHugo    schedule 29.07.2011
comment
Хьюго, вам нужно иметь в виду, что HTML, CSS, JS больше не являются веб-платформой. Это код, который никогда не запустится ни в одной версии IE или в любом веб-браузере, если на то пошло. :-)   -  person David Murdoch    schedule 29.07.2011
comment
Что, черт возьми, пытается сделать Apple ... Сейчас 2015 год, и никаких признаков let поддержки в их жалком браузере.   -  person Salman von Abbas    schedule 10.04.2015
comment
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ Многие старые ответы (включая принятый) были заменены событиями. Все основные современные браузеры поддерживают ключевое слово ES2015 (также известное как ES6) let, но на момент написания этой статьи поддержка в некоторых кругах является довольно новой (например, только iOS 10 Safari).   -  person T.J. Crowder    schedule 06.04.2017
comment
Я предлагаю изменить ваш принятый ответ на один из правильных на данный момент. Да, принятый в настоящее время вариант был правильным в то время, но он был неправильным уже несколько лет, и цель SO - быть хранилищем знаний, а не историческим архивом. :-)   -  person T.J. Crowder    schedule 17.11.2017
comment
Как этот вопрос задавали в 2010 году? Я думал, что let и const были представлены в 2015 году с es6?   -  person Kyle Vassella    schedule 05.02.2021


Ответы (7)


РЕДАКТИРОВАТЬ: let и const поддерживаются всеми современными браузерами и являются частью спецификация ECMAScript 2015 (ES6).

В основном, если вам не нужно поддерживать что-либо ниже IE11, let и const в настоящее время безопасно использовать.

В IE11 есть небольшая причуда с let при использовании с for циклами, переменная не привязана к блоку for, как вы ожидали, она ведет себя как var ...

См. Также: let и const.


Старый и устаревший ответ 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>
person Christian C. Salvadó    schedule 01.03.2010
comment
Что ж; Я только что обновил свой ответ, а потом узнал, что ты меня обыграл за минуту;). +1 - person Harmen; 01.03.2010
comment
Спасибо, я использовал HTML 5 '‹script› ‹/script› без атрибута типа. - person David Murdoch; 01.03.2010
comment
Обратите внимание, что ключевое слово let теперь находится в стандарте ECMAscript 6 (черновик). - person Nico Burns; 16.11.2012
comment
Можно включить в Chrome 19+ с помощью флага Experimental Javascript features и в node.js с помощью --harmony. - person Salman von Abbas; 11.12.2012
comment
;version=1.7 по-прежнему требуется в Firefox? Я попробовал let в консоли, и это сработало. - person sam; 25.08.2013
comment
Похоже, что эта спецификация версии устарела. Если я попытаюсь указать версию, Chrome не загружает этот javascript. - person Jay Shah; 19.06.2018

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

person T.J. Crowder    schedule 06.04.2017
comment
Полезный ответ: +1. - person MWiesner; 12.04.2018

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

person sam    schedule 25.08.2013
comment
Хотя IE11 поддерживает ключевое слово let (в том смысле, что он не генерирует SyntaxError), его реализация не соответствует спецификации - переменная не имеет должной блочной области видимости. (также обратите внимание, что нет и никогда не будет IE после 11) - person CertainPerformance; 11.12.2018

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

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

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

<script type="application/javascript;version=1.7"> ... </script>
person Harmen    schedule 01.03.2010
comment
Похоже, что эта спецификация версии устарела. Если я попытаюсь указать версию, Chrome не загружает этот javascript. - person Jay Shah; 19.06.2018
comment
Информация о поддержке версии браузера устарела. - person derloopkat; 13.03.2021

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

person jmoreno    schedule 07.07.2013

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

person Pieter Heemeryck    schedule 10.06.2016

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

person Matthew    schedule 08.06.2015