Jakie przeglądarki obsługują obecnie słowo kluczowe „let” w JavaScript?

80

Tworzę aplikację i nigdy nie muszę martwić się o Internet Explorera i przyglądałem się niektórym funkcjom przeglądarek klasy A +, których nie ma w Internet Explorerze1.

Jedną z tych funkcji, z którymi chciałem się bawić, jest słowo kluczowe let w JavaScript

Wydaje się, że żaden z ich przykładów `` niech '' nie działa w przeglądarce Firefox 3.6 ( ciąg 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)). Otrzymuję SyntaxError: missing ; before statementpodczas wykonywania let foo = "bar".

Więc jakie przeglądarki obsługują słowo kluczowe let? (A może robię coś źle?)

David Murdoch
źródło
Chociaż rozumiem i zgadzam się, że nie dbasz o to, jeśli to działa w IE, powinieneś wziąć pod uwagę, że słowo kluczowe „let” oznacza tylko mozilla, więc nawet jeśli można powiedzieć „IE go nie obsługuje”, właściwe można by powiedzieć, że "obsługuje to tylko Mozilla". Tak jak unikamy tagów tylko dla IE lub słów kluczowych, powinieneś unikać i * -tylko słów kluczowych.
WhyNotHugo
Hugo, musisz pamiętać, że HTML, CSS, JS nie jest już platformą internetową. Tak się składa, że ​​kod jest kodem, który nigdy nie będzie działał w żadnej wersji IE ani w żadnej przeglądarce internetowej . :-)
David Murdoch
To, co Apple próbuje zrobić… jest 2015 rok i nie ma żadnych oznak letwsparcia w ich żałosnej przeglądarce.
Salman von Abbas,
3
PROSZĘ PAMIĘTAĆ, że wiele starszych odpowiedzi (w tym odpowiedź zaakceptowana) zostało zastąpionych przez wydarzenia. Wszystkie główne współczesne przeglądarki obsługują letsłowo kluczowe ES2015 (aka „ES6”) , ale w niektórych kręgach jest ono dość nowe (na przykład tylko iOS 10 Safari).
TJ Crowder
Proponuję zmienić zaakceptowaną odpowiedź na jedną z poprawnych. Tak, obecnie akceptowana była wtedy poprawna, ale od kilku lat jest błędna, a celem SO jest repozytorium wiedzy, a nie archiwum historyczne. :-)
TJ Crowder

Odpowiedzi:

56

EDYCJA : leti constsą obsługiwane przez wszystkie nowoczesne przeglądarki i stanowią część specyfikacji ECMAScript 2015 (ES6) .

Zasadniczo, jeśli nie potrzebujesz obsługiwać niczego poniżej IE11 leti constmożesz z nich bezpiecznie korzystać w dzisiejszych czasach.

W IE11 jest małe dziwactwo, letgdy jest używana z forpętlami, zmienna nie jest związana z forblokiem, jak można by się spodziewać, zachowuje się tak, varjak ...

Zobacz także: let i const support.


Stara i nieaktualna odpowiedź z 2010 roku: Te rozszerzenia nie są standardem ECMA, są obsługiwane tylko przez implementację Mozilli.

W środowiskach przeglądarek należy umieścić w tagu numer wersji JavaScript, scriptaby go używać:

<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>
Christian C. Salvadó
źródło
1
Dobrze; Właśnie zaktualizowałem swoją odpowiedź i dowiedziałem się, że pokonałeś mnie w minutę;). +1
Harmen
1
Dzięki, używałem kodu HTML 5 „<script> </script>” bez atrybutu typu.
David Murdoch
19
Należy zauważyć, że letsłowo kluczowe znajduje się teraz w standardzie ECMAscript 6 (wersja robocza).
Nico Burns
3
Można włączyć w przeglądarce Chrome 19+ za pomocą flagi „Eksperymentalne funkcje JavaScript” oraz w node.js przy użyciu --harmony.
Salman von Abbas,
2
Czy ;version=1.7nadal jest wymagane w przeglądarce Firefox? Spróbowałem letw konsoli i zadziałało.
sam
31

Od kwietnia 2017 r .:

  • Wszystkie aktualne popularne przeglądarki, takie jak Chrome, Firefox i Edge, obsługują letsłowo kluczowe ES2015 (aka „ES6”) .

  • iOS Safari nie był obsługiwany letaż do OS 10 (np. OS 9 nie).

  • Niektóre starsze przeglądarki, takie jak IE9-IE11, obsługują wczesną wersję programu, letale nie obsługują semantyki zdefiniowanej w ES2015 (szczególnie w odniesieniu do deklaracji w nagłówkach forpętli). Nie jest to więc błąd składniowy i deklaruje zmienną, ale nie działa tak, jak powinien. Na przykład, w poprawnej implementacji, następujące logi 0, 1 i 2; na IE9-IE11 loguje 3, 3, 3:

  • Przestarzałe przeglądarki, takie jak IE8, w ogóle go nie obsługują.

TJ Crowder
źródło
1
Pomocna odpowiedź: +1.
MWiesner
25

Istnieje częściowe wsparcie w przeglądarce Internet Explorer 11 ( forzakres jest nieprawidłowy ) i pełne wsparcie we wszystkich obecnych przeglądarkach ( tabela zgodności ECMAScript 6: let ).

sam
źródło
1
Chociaż IE11 „obsługuje” letsłowo kluczowe (w tym sensie, że nie zgłasza a SyntaxError), jego implementacja nie jest zgodna ze specyfikacją - zmienna nie ma prawidłowego zakresu blokowego. (pamiętaj również, że nie ma i nigdy nie będzie żadnego IE po 11)
CertainPerformance
12

Internet Explorer i Opera nie obsługują letżadnej wersji przeglądarki, Firefox od wersji 2.0 i Safari od 3.2.

Zobacz tę tabelę wersji JavaScript w Wikipedii.

Właśnie dowiedziałem się , że musisz zdefiniować, czy używasz JavaScript 1.7, czy nie. Twój kod będzie wyglądał następująco:

<script type="application/javascript;version=1.7"> ... </script>
Harmen
źródło
Wygląda na to, że ta specyfikacja wersji jest teraz przestarzała. Jeśli spróbuję określić wersję, Chrome nie ładuje tego javascript.
Jay Shah,
3

Od pierwszego zadania tego pytania minęło dużo czasu: słowa kluczowe „let” i „const” zostały wprowadzone w ECMAScript 2015 (ES6). Wyszukaj `` let '' lub `` const '' w tej niesamowitej tabeli zgodności z ES6: https://kangax.github.io/compat-table/es6/

Pieter Heemeryck
źródło
2

Tylko aktualizacja: Chrome obsługuje teraz, letale tylko wtedy, gdy zadeklarujesz "use strict"; dyrektywa.

Mateusz
źródło