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?)


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>

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.


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 ).


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>

Diese Versionsspezifikation scheint jetzt veraltet zu sein. Wenn ich versuche, die Version anzugeben, lädt Chrome dieses Javascript nicht.
Jay Shah



2

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.