Je développe une application et je n'ai pas à me soucier d'Internet Explorer et je cherchais certaines des fonctionnalités présentes dans les navigateurs de niveau A + qui ne sont pas dans Internet Explorer1.
L'une de ces fonctionnalités avec laquelle je voulais jouer est mot clé let de JavaScript
Je n'arrive pas à obtenir l'un de leurs exemples "let" pour fonctionner dans Firefox 3.6 ( ser-Agent chaîne: 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)). Je reçois SyntaxError: missing ; before statement
lors de l'exécution let foo = "bar"
.
Alors, quels navigateurs prennent en charge le mot clé let? (Ou est-ce que je fais quelque chose de mal?)
[~ # ~] modifier [~ # ~] : let
et const
sont pris en charge par tous les navigateurs modernes et font partie de la spécification ECMAScript 2015 (ES6) .
Fondamentalement, si vous n'avez pas besoin de prendre en charge quoi que ce soit en dessous d'IE11, let
et const
sont sûrs à utiliser de nos jours.
Sur IE11 il y a une petite bizarrerie avec let
lorsqu'elle est utilisée avec for
boucles, la variable n'est pas liée au bloc for
comme vous le feriez attendez-vous, il se comporte comme var
l'a fait ...
Voir aussi: let et const support.
Réponse ancienne et obsolète de 2010: Ces extensions ne sont pas conformes à la norme ECMA, elles ne sont prises en charge que par l'implémentation de Mozilla.
Dans les environnements de navigateur, vous devez inclure le code JavaScript numéro de version dans votre balise script
pour l'utiliser:
<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>
En avril 2017:
Tous les principaux navigateurs mis à jour tels que Chrome, Firefox et Edge prennent en charge le mot clé ES2015 (aka "ES6") let
.
iOS Safari ne prenait pas en charge let
jusqu'à OS 10 (par exemple, OS 9 ne le faisait pas).
Certains navigateurs plus anciens, comme IE9-IE11, prennent en charge une version antérieure de let
mais ne pas prennent en charge la sémantique définie par ES2015 (en particulier en ce qui concerne les déclarations dans les en-têtes de for
boucles). Ce n'est donc pas une erreur de syntaxe, et il déclare la variable, mais cela ne fonctionne pas comme il est censé le faire. Par exemple, dans une implémentation correcte, les journaux suivants 0, 1 et 2; sur IE9-IE11, il enregistre 3, 3, 3:
for (let i = 0; i < 3; ++i) {
setTimeout(function() {
console.log(i);
}, i * 100);
}
Les navigateurs obsolètes tels que IE8 ne le prennent pas du tout en charge.
Il existe une prise en charge partielle dans Internet Explorer 11 ( la portée [for
est incorrecte ) et une prise en charge complète dans tous les navigateurs actuels ( tableau de compatibilité ECMAScript 6: let ).
Internet Explorer et Opera ne prennent en charge let
sur aucune version de navigateur, Firefox depuis la version 2.0 et Safari depuis 3.2.
Voir ceci tableau de version JavaScript sur Wikipedia.
Je viens de découvrir que vous devez définir si vous utilisez JavaScript 1.7 ou non. Votre code sera donc:
<script type="application/javascript;version=1.7"> ... </script>
Apparemment Internet Explorer 1 en Edge le mode prend en charge let
, par Informations sur la version JavaScript.
Beaucoup de temps s'est écoulé depuis la première question posée: les mots clés "let" et "const" ont été introduits dans ECMAScript 2015 (ES6). Recherchez "let" ou "const" dans ce superbe tableau de compatibilité ES6: https://kangax.github.io/compat-table/es6/
Juste une mise à jour: Chrome prend désormais en charge let
mais uniquement si vous déclarez "use strict"
; directif.