Ne pouvez pas utiliser “let” mot-clé dans Safari Javascript?
Je ne comprends pas la meilleure façon d'utiliser les "laisser" mot clé...
- Dans IE11 et Chrome45 je peux l'utiliser fine
- Dans Safari8.0.4, comme dans les anciennes versions de google Chrome, il donne l'erreur "unexpected utilisation du mot réservé "let'"
- Dans Firefox le mot-clé let ne fonctionne qu'à l'intérieur de
<script type="application/javascript;version=1.7"/>
, mais ce type de script n'est même pas reconnu comme Javascript dans IE11, Chrome45, Safari8.
Voici un JSFiddle, qui se montre en action: https://jsfiddle.net/p6cgtyg6/1/
Donc -- je n'ai pas l'esprit obligeant les utilisateurs à utiliser les versions modernes de leurs navigateurs.
Et je n'ai pas l'esprit à l'exclusion de Safari si honnêtement, il n'y est pas de version de Safari qui prend en charge ce mot clé. (Est-ce vraiment vrai? Pourquoi tout le monde passent tout leur temps à ronchonner à propos de c'est à dire quand Safari semble tellement pire dans l'ES6 termes? Ai-je raté quelque chose?).
Mais comment dois-je me permettre de "laisser" travailler dans Firefox, tout en n'empêchant pas de Chrome/IE? (Je n'ai pas encore trouvé des liens de personnes ronchonner à propos de la façon dont Firefox balise de script se comporte différemment à partir de Chrome, et j'aurais attendu plus de plaintes, donc je me dis que je dois avoir manqué quelque chose d'évident...)
"for (var i=0; i<c.longueur; i++) { $("</span>").texte(c[i].de titre).cliquez sur(function() { DoStuff(c[i]); }).appendTo(p); }" -- ce code se comporte mal. La méthode la plus simple et la plus propre codefix est l'utilisation de "laisser" à l'intérieur de la boucle for. Je n'ai pas vraiment envie d'écrire yuckier code maintenant lors de l'ES6 est peu autour du coin et il est surtout pris en charge ad permettra de résoudre le problème, bien...
pas besoin de
let
dans ce cas, si. de nombreux moyens plus faciles et plutôt que d'ajouter une dépendance sur un 6=>5 compilateur.La restriction de l'accessibilité de votre site web à un couple de la plus récente version de votre navigateur internet étant donné que vous souhaitez utiliser une nouvelle fonctionnalité d'un projet de spécification est votre prérogative de cours. Mais votre situation est entièrement auto-imposés. 😉
c'est un problème parce que le temps a passé, ES6 est maintenant la norme, et safari est le nouvel IE. donc, la question reste encore et n'est plus auto-imposées.
OriginalL'auteur Lucian Wischik | 2015-03-22
Vous devez vous connecter pour publier un commentaire.
Concernant Safari 8, c'est juste pas pris en charge ; pour ce navigateur, je vous recommande d'utiliser Babel.
Si vous avez le pressentiment que ce bug ne sera pas corrigé de sitôt* alors vous pourriez avoir un script qui détecte Firefox qui serait alors d'injecter votre script(s) avec la valeur appropriée pour le type de l'attribut.
Comme une note de côté, je vous conseille de ne pas utiliser que des blocs—sauf si vous voulez utiliser cette transpiler—ni laisser des expressions qui sera abandonné.
* fixe dans Firefox 44
OriginalL'auteur Knu
let
est une partie de ECMAScript 6 cahier des charges, et ECMAScript 6 est lui-même un " projet de statut. Même dans sa forme incomplète de ses caractéristiques ne sont pas entièrement pris en charge par les versions du navigateur.Puisque vous voulez plonger dans l'ES6 aujourd'hui pour la production, votre meilleur pari est d'utiliser ES6 pour ES5 transpiler, les plus importantes sont la Babel et Traceur, qui sont disponibles sous la forme de la CLI et les paquets pour le système de build de votre choix. Il existe des outils en ligne pour Babel et Traceur pour les essayer. Et Scratch JS extension pour Chrome utilise à la fois Babel et Traceur et est excellent pour le développement et la compilation ES6 scripts si le système de construction n'est pas une option.
Ici est up-to-date tableau de comparaison qui embrasse ES6 support de la fonction dans les deux navigateurs et ES6 compilateurs.
Et voici une grande collection de ES6-des outils connexes.
OriginalL'auteur estus
Voir navigateur sur la compatibilité de cette ES6 mot-clé.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Browser_compatibility
Aussi voir ce post DONC pour ES6 la détection de fonctionnalité.
Sans un serveur de générer les scripts de balises, je ne vois pas comment on peut le faire bien sur tous les navigateurs - dans chrome, il fonctionne avec une balise de script comme
script type="application/javascript" version="1.7"
et même sans la version, mais dans firefox, il doitscript type="application/javascript;version=1.7"
OriginalL'auteur click2install