Welche Browser unterstützen derzeit das JavaScript-Schlüsselwort "let"?

80

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 statementbei der Ausführung let foo = "bar".

Welche Browser unterstützen das Schlüsselwort let? (Oder mache ich etwas falsch?)

David Murdoch
quelle
Während und verstehen Sie und stimmen Sie zu, dass es nicht wichtig ist, ob es im Internet Explorer funktioniert, sollten Sie berücksichtigen, dass das Schlüsselwort "let" nur Mozilla ist Art und Weise zu sagen, wäre "nur Mozilla unterstützt es". Genau wie wir nur IE-Tags oder Schlüsselwörter vermeiden, sollten Sie nur Schlüsselwörter vermeiden.
WhyNotHugo
Hugo, du musst bedenken, dass HTML, CSS, JS keine reine Webplattform mehr ist. Der Code geschieht Code zu sein , die in einer beliebigen Version von IE, oder jede laufen nie Web für diese Angelegenheit Browser. :-)
David Murdoch
Was um alles in der Welt versucht Apple zu tun? Es ist 2015 und es gibt keine Anzeichen von letUnterstützung in ihrem erbärmlichen Browser.
Salman von Abbas
3
BITTE BEACHTEN SIE Viele der älteren Antworten (einschließlich der akzeptierten Antwort) wurden von Ereignissen überholt. Alle gängigen aktuellen Browser unterstützen das Schlüsselwort ES2015 (auch bekannt als "ES6"). Derzeit letist die Unterstützung für das Schreiben in einigen Kreisen jedoch recht neu (z. B. nur iOS 10 Safari).
TJ Crowder
Ich schlage vor, Ihre akzeptierte Antwort in eine der jetzt korrekten zu ändern. Ja, das derzeit akzeptierte war zu der Zeit korrekt, aber es ist seit einigen Jahren falsch, und der Zweck von SO ist es, ein Wissensspeicher zu sein, kein historisches Archiv. :-)
TJ Crowder

Antworten:

56

BEARBEITEN : letund constwerden 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 letund constheutzutage sicher sind.

In IE11 gibt es eine kleine Besonderheit: letBei Verwendung mit forSchleifen ist die Variable nicht forwie erwartet an den Block gebunden , sondern verhält sich wie var...

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 scriptTag 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>
Christian C. Salvadó
quelle
1
Gut; Ich habe gerade meine Antwort aktualisiert und dann herausgefunden, dass du mich in einer Minute geschlagen hast;). +1
Harmen
1
Danke, ich habe '<script> </ script>' von HTML 5 ohne den Typ attr verwendet.
David Murdoch
19
Beachten Sie, dass das letSchlüsselwort ist jetzt in der ECMAscript 6 (Entwurf) Standard.
Nico Burns
3
Kann in Chrome 19+ über das Flag "Experimentelle Javascript-Funktionen" und in node.js mit aktiviert werden --harmony.
Salman von Abbas
2
Wird ;version=1.7in Firefox noch benötigt? Ich habe es letin der Konsole versucht und es hat funktioniert.
Sam
31

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 leterst 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 von forSchleifen). 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:

  • Veraltete Browser wie IE8 unterstützen dies überhaupt nicht.

TJ Crowder
quelle
1
Eine hilfreiche Antwort: +1.
MWiesner
25

In Internet Explorer 11 gibt es teilweise Unterstützung ( forUmfang ist falsch ) und in allen aktuellen Browsern vollständige Unterstützung ( ECMAScript 6-Kompatibilitätstabelle: let ).

Sam
quelle
1
Während IE11 das letSchlüsselwort "unterstützt" (indem es kein a auslöst SyntaxError), 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)
CertainPerformance
12

Internet Explorer und Opera unterstützen letkeine 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>
Harmen
quelle
Diese Versionsspezifikation scheint jetzt veraltet zu sein. Wenn ich versuche, die Version anzugeben, lädt Chrome dieses Javascript nicht.
Jay Shah
3

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/

Pieter Heemeryck
quelle
2

Nur ein Update: Chrome unterstützt jetzt letaber nur, wenn Sie das deklarieren "use strict"; Richtlinie.

Matthew
quelle