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 statement
podczas wykonywania let foo = "bar"
.
Więc jakie przeglądarki obsługują słowo kluczowe let? (A może robię coś źle?)
javascript
firefox
firefox3.6
David Murdoch
źródło
źródło
let
wsparcia w ich żałosnej przeglądarce.let
słowo kluczowe ES2015 (aka „ES6”) , ale w niektórych kręgach jest ono dość nowe (na przykład tylko iOS 10 Safari).Odpowiedzi:
EDYCJA :
let
iconst
są 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
let
iconst
możesz z nich bezpiecznie korzystać w dzisiejszych czasach.W IE11 jest małe dziwactwo,
let
gdy jest używana zfor
pętlami, zmienna nie jest związana zfor
blokiem, jak można by się spodziewać, zachowuje się tak,var
jak ...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,
script
aby 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>
źródło
let
słowo kluczowe znajduje się teraz w standardzie ECMAscript 6 (wersja robocza).--harmony
.;version=1.7
nadal jest wymagane w przeglądarce Firefox? Spróbowałemlet
w konsoli i zadziałało.Od kwietnia 2017 r .:
Wszystkie aktualne popularne przeglądarki, takie jak Chrome, Firefox i Edge, obsługują
let
słowo kluczowe ES2015 (aka „ES6”) .iOS Safari nie był obsługiwany
let
aż do OS 10 (np. OS 9 nie).Niektóre starsze przeglądarki, takie jak IE9-IE11, obsługują wczesną wersję programu,
let
ale nie obsługują semantyki zdefiniowanej w ES2015 (szczególnie w odniesieniu do deklaracji w nagłówkachfor
pę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:Pokaż fragment kodu
for (let i = 0; i < 3; ++i) { setTimeout(function() { console.log(i); }, i * 100); }
Przestarzałe przeglądarki, takie jak IE8, w ogóle go nie obsługują.
źródło
Istnieje częściowe wsparcie w przeglądarce Internet Explorer 11 (
for
zakres jest nieprawidłowy ) i pełne wsparcie we wszystkich obecnych przeglądarkach ( tabela zgodności ECMAScript 6: let ).źródło
let
słowo kluczowe (w tym sensie, że nie zgłasza aSyntaxError
), 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)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>
źródło
Widocznie Internet Explorer 10 w krawędzi obsługuje tryb
let
Per JavaScript Version Information .źródło
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/
źródło
Tylko aktualizacja: Chrome obsługuje teraz,
let
ale tylko wtedy, gdy zadeklarujesz"use strict"
; dyrektywa.źródło