web-dev-qa-db-fra.com

Quels navigateurs prennent actuellement en charge le mot clé «let» de JavaScript?

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

70
David Murdoch

[~ # ~] 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>
41
CMS

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.

26
T.J. Crowder

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

25
sam

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>
12
Harmen

Apparemment Internet Explorer 1 en Edge le mode prend en charge let, par Informations sur la version JavaScript.

6
jmoreno

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/

3
pursang

Juste une mise à jour: Chrome prend désormais en charge let mais uniquement si vous déclarez "use strict"; directif.

2
Matthew