Kann nicht mit "lassen" - Schlüsselwort in Safari Javascript?
Verstehe ich nicht, am besten mit "lassen" keyword...
- In IE11 und Chrome45 ich kann es feine
- In Safari8.0.4, wie in älteren Versionen von Chrome, gibt es den Fehler "unerwartete Verwendung des reservierten Wortes 'lassen'"
- In Firefox das Schlüsselwort let kann nur innerhalb der
<script type="application/javascript;version=1.7"/>
, aber dieses script type gar nicht erkannt, wie Javascript, IE11, Chrome45, Safari8.
Hier ein JSFiddle zeigt es in Aktion: https://jsfiddle.net/p6cgtyg6/1/
So, ich bin nicht dagegen, dass die Benutzer verwenden moderne Versionen Ihrer Browser.
Ist und ich nicht Verstand, ohne Safari, wenn es ehrlich ist, keine version von Safari unterstützt dieses Schlüsselwort. (Ist das wirklich wahr? Warum alle verbringen Ihre ganze Zeit ergreifend über den IE beim Safari scheint so viel schlimmer in ES6 Bedingungen? Habe ich etwas übersehen?).
Aber wie sollte ich zulassen "lassen" arbeiten in Firefox zwar nicht die Verhinderung von Chrome/IE? (Ich habe noch nicht gefunden, die links von Menschen, die ergreifend über, wie Firefox script-tag verhält sich anders als Chrome, und ich hätte erwartet, dass mehr Beschwerden, so dass ich vermute, ich muss etwas verpasst haben offensichtlich...)
- Warum ist die mangelnde Unterstützung lassen ein Problem? ECMA-262 6. Edition ist immer noch nur ein Entwurf, viele seiner Funktionen werden nicht von allen Browsern unterstützt. Es gibt einige ES5-features noch nicht unterstützt.
- "for (var i=0; i<c.length; i++) { $("<span/>").text(c[i].Titel).klicken Sie auf(Funktion() { DoStuff(c[i]); }).appendTo(p); }" -- dieser code verhält sich falsch. Die einfachste und sauberste codefix ist die Verwendung von "lassen" im inneren der for-Schleife. Ich nicht wirklich wollen, zu schreiben yuckier code wird nun, wenn ES6 ist kurz um die Ecke und wird meist unterstützt ad wird das problem lösen schön...
- keine Notwendigkeit für
let
in diesem Fall, obwohl. viele einfachere Wege, anstatt das hinzufügen der Abhängigkeit von einer 6=>5-compiler. - Die Beschränkung der Barrierefreiheit auf Ihrer Website ein paar die meisten aktuellen browser-Versionen, weil Sie möchten, verwenden Sie ein neues feature einen Entwurf für eine Spezifikation ist Ihr Vorrecht natürlich. Aber Ihr Dilemma ist komplett selbst auferlegt. 😉
- es ist ein Problem, weil die Zeit vergeht, ES6 ist jetzt standard, und safari ist der neue IE. so die Frage bleibt immer noch und ist nicht mehr selbst-auferlegt.
- die Verwendung von let ist völlig überflüssig, es gibt keinen guten Grund, es zu benutzen anstelle von var. Es wurde eingeführt, um den Komfort bei der transpiling anderen Sprachen zu javascript. Javascript-Anwendungen mit über 100.000 Zeilen wurden geschrieben, ohne lassen, es ist unnötig (geschrieben mit Safari 10.0, unterstützt lassen). 😉
- so selbstgefällig wie du willst,
let
ist hier und es gibt nichts überflüssiges oder unnötiges über die Verwendung einer Sprache-Funktion, wenn die situation es erfordert. - müssen persönlich. Ob ein bestimmtes feature oder nicht sollte auf der Basis rationaler Abwägung der vor-und Nachteile. Der einzige Grund, warum die OP hat vorgeschlagen, es zu benutzen ist "ich möchte" - (daher meine Verwendung des unentgeltlich). Aber es gibt echte Nachteile, die aus mangelnder browser-Unterstützung. Einige Komponenten sind möglicherweise nicht in der Lage, ein upgrade auf einen browser, der unterstützt lassen, es ist also nicht unbedingt der user ist Schuld, dass Sie mit einem älteren browser.
- Sie machte Sie es persönlich, indem Sie annehmen, die Sie am besten kannte und in der Annahme gab es keine unentgeltliche verwendet für
let
. das war nie und ist noch immer nicht in den Geltungsbereich der Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Über Safari 8, es ist nur nicht unterstützt ; für die browser, ich würde empfehlen, mit Babel.
Wenn du das Bauchgefühl, dass dieser Fehler nicht behoben werden jederzeit schnell* dann könnte man ein Skript, das erkennt Firefox das wäre dann injizieren Sie Ihr script(s) mit dem entsprechenden Wert für das type-Attribut.
Als seitliche Anmerkung, ich würde raten, nicht zu verwenden, lassen Sie Blöcke—es sei denn, Sie verwenden möchte,diese transpiler—, noch lassen Ausdrücke, die gelöscht werden.
* fixed in Firefox 44
let
ist ein Teil von ECMAScript-6-Spezifikation und ECMAScript 6 selbst ist in "Entwurf" - status. Selbst in seiner unvollständigen form seine Funktionen nicht unterstützt werden vollständig von der eigentlichen browser-Versionen.Da Sie wollen, Tauchen Sie ein in ES6 heute für die Produktion, Ihre beste Wette ist die Verwendung von ES6 nach ES5 transpiler, die meisten prominenten sind Babel und Traceur, die sowohl als CLI und Pakete für das build-system Ihrer Wahl. Es gibt online-tools für Babel und Traceur, um Sie auszuprobieren. Und Kratzen JS - Erweiterung für Chrome verwendet sowohl Babel und Traceur und ist hervorragend für die Entwicklung und Kompilierung von ES6-Skripts, wenn das build-system ist keine option.
Hier ist up-to-date-Vergleich Tabelle umarmt, die ES6-feature-Unterstützung im Browser und ES6-Compiler.
Und hier ist eine große Sammlung von ES6-bezogene tools.
Finden Sie unter browser-Kompatibilität dieser ES6 Stichwort.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Browser_compatibility
Auch siehe dieser post SO für ES6-feature-Erkennung.
script type="application/javascript" version="1.7"
und auch ohne die version, aber bei firefox muss esscript type="application/javascript;version=1.7"