Ich entwickle eine App und muss mich nie um Internet Explorer kümmern. Ich habe mir einige der Funktionen angesehen, die in Browsern der Klasse A + enthalten sind, die nicht in Internet Explorer1 enthalten sind.
Eine dieser Funktionen, mit denen ich herumspielen wollte, ist das Schlüsselwort let von JavaScript
Ich kann anscheinend keines ihrer 'let'-Beispiele in Firefox 3.6 zum Laufen bringen ( User-Agent- Zeichenfolge: 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)). Ich bekomme SyntaxError: missing ; before statement
bei der Ausführung let foo = "bar"
.
Welche Browser unterstützen das Schlüsselwort let? (Oder mache ich etwas falsch?)
javascript
firefox
firefox3.6
David Murdoch
quelle
quelle
let
Unterstützung in ihrem erbärmlichen Browser.let
ist die Unterstützung für das Schreiben in einigen Kreisen jedoch recht neu (z. B. nur iOS 10 Safari).Antworten:
BEARBEITEN :
let
undconst
werden von allen modernen Browsern unterstützt und sind Teil der ECMAScript 2015 (ES6) -Spezifikation.Grundsätzlich, wenn Sie nichts unter IE11 unterstützen müssen
let
undconst
heutzutage sicher sind.In IE11 gibt es eine kleine Besonderheit:
let
Bei Verwendung mitfor
Schleifen ist die Variable nichtfor
wie erwartet an den Block gebunden , sondern verhält sich wievar
...Siehe auch: let and const support.
Alte und veraltete Antwort aus dem Jahr 2010: Diese Erweiterungen sind kein ECMA-Standard, sondern werden nur von der Mozilla-Implementierung unterstützt.
In Browserumgebungen sollten Sie die JavaScript- Versionsnummer in Ihr
script
Tag aufnehmen, um es zu verwenden:<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>
quelle
let
Schlüsselwort ist jetzt in der ECMAscript 6 (Entwurf) Standard.--harmony
.;version=1.7
in Firefox noch benötigt? Ich habe eslet
in der Konsole versucht und es hat funktioniert.Stand April 2017:
Alle aktuellen gängigen Browser wie Chrome, Firefox und Edge unterstützen das Schlüsselwort ES2015 (auch bekannt als "ES6")
let
.iOS Safari wurde
let
erst unter OS 10 unterstützt (z. B. OS 9 nicht).Einige ältere Browser, wie z. B. IE9-IE11, unterstützen eine frühe Version von
let
, unterstützen jedoch nicht die von ES2015 definierte Semantik (insbesondere in Bezug auf Deklarationen in den Headern vonfor
Schleifen). Es handelt sich also nicht um einen Syntaxfehler, und es wird die Variable deklariert, aber es funktioniert nicht so, wie es soll. In einer korrekten Implementierung werden beispielsweise die folgenden Protokolle 0, 1 und 2 protokolliert. Auf IE9-IE11 werden 3, 3, 3 protokolliert:Code-Snippet anzeigen
for (let i = 0; i < 3; ++i) { setTimeout(function() { console.log(i); }, i * 100); }
Veraltete Browser wie IE8 unterstützen dies überhaupt nicht.
quelle
In Internet Explorer 11 gibt es teilweise Unterstützung (
for
Umfang ist falsch ) und in allen aktuellen Browsern vollständige Unterstützung ( ECMAScript 6-Kompatibilitätstabelle: let ).quelle
let
Schlüsselwort "unterstützt" (indem es kein a auslöstSyntaxError
), entspricht seine Implementierung nicht der Spezifikation - die Variable hat keinen ordnungsgemäßen Blockumfang. (Beachten Sie auch, dass es keinen IE nach 11 gibt und nie geben wird)Internet Explorer und Opera unterstützen
let
keine Browserversion, Firefox seit Version 2.0 und Safari seit Version 3.2.Siehe diese JavaScript-Versionstabelle auf Wikipedia.
Ich habe gerade herausgefunden, dass Sie definieren müssen, ob Sie JavaScript 1.7 verwenden oder nicht. Ihr Code lautet also:
<script type="application/javascript;version=1.7"> ... </script>
quelle
Anscheinend Internet Explorer 10 in Edge - Modus unterstützt
let
, per JavaScript Versionsinformationen .quelle
Seit der ersten Beantwortung dieser Frage ist viel Zeit vergangen: Die Schlüsselwörter 'let' und 'const' wurden in ECMAScript 2015 (ES6) eingeführt. Suchen Sie in dieser fantastischen ES6-Kompatibilitätstabelle nach "let" oder "const": https://kangax.github.io/compat-table/es6/
quelle
Nur ein Update: Chrome unterstützt jetzt
let
aber nur, wenn Sie das deklarieren"use strict"
; Richtlinie.quelle