Quelle est la version de Javascript est pris en charge dans node.js
Je me suis prise en main avec Node.js et je vais avoir un moment difficile de déterminer quelle est la version de JavaScript est pris en charge par le nœud qui rend difficile de déterminer quelles sont les fonctionnalités que je peux utiliser. Voici ce que je sais.
- Nœud utilise V8
- V8 implémente ECMAScript, comme spécifié dans l'ECMA-262, 3e édition
- ECMA-262, 3e édition est JavaScript 1.5
Compte tenu de cela, je suppose que je peux utiliser JavaScript 1.5 compatible code de nœud. Cependant, il s'avère que je peux utiliser le Array.forEach
, parmi d'autres constructions, même si selon le MDC, il n'est pas disponible jusqu'à ce que Javascript 1.6 -- ECMA-262, 5e édition.
Où vais-je tort? Est-il un document quelque part qui détaille les fonctionnalités de langage?
- Pour 2015 mise à jour, reportez-vous à ECMAScript 6 fonctionnalités disponibles dans Node.js 0.12.
- Et un 05.2016 mise à jour, selon nodejs docs, ils suivent JavaScript spécification ECMA-262, 6e édition et de "Tous les ECMAScript 2015 (ES6) fonctionnalités sont divisés en trois groupes pour l'expédition, mise en scène, et dans le progrès des fonctionnalités"
- ECMA-262 est ECMAScript 5.1 est Javascript 1.8.5, voir aussi (faites défiler vers le bas pour les spécifications): developer.mozilla.org/nl/docs/Web/JavaScript/Reference/...
Vous devez vous connecter pour publier un commentaire.
Cette matrice (V8 suit le WebKit de la colonne d'assez près) semble assez bien répondre à la question "quelles sont les fonctionnalités que puis-je utiliser?" mais je ne peux pas trouver une réponse canonique à "quelle est la version de javascript est pris en charge?" Aussi loin que je peux dire, la meilleure réponse est celle-ci: ECMA-262 3e édition est pris en charge, mais de nombreuses caractéristiques de la 5ème édition sont également pris en charge.
Il y a une bonne explication de pourquoi V8 suit le WebKit et JavaScriptCore fonctionnalité sur ce fil.
Le Nœud version javascript dépend de la version du v8 qui Nœud utilise. Nœud de la version 0.5.1 (14 Juillet 2011) et à la hausse l'utilisation v8 3.4.10 ou plus tard, et sont 5ème édition ECMA-262, plutôt que de la 3e Édition. 5ème édition est l'équivalent de Javascript 1.8.5. Voir ci-dessous raisons.
Entre le 21 Mai 2011 et le 15 juin 2011, le v8 site web de l'arrêté d'inscription v8 que la mise en œuvre de la 3ème édition ECMA-262 et a commencé à montrer de la 5e édition.
http://web.archive.org/web/20110521053630/http://code.google.com/p/v8/
http://web.archive.org/web/20110615102350/http://code.google.com/p/v8/
Selon le v8 changelog, le 15 juin 2011 v8 changé de version 3.4.4. Alors que la version et les versions ultérieures sont 5ème édition.
Selon le Noeud changelog, v8 3.4.10 était dans le Nœud de la Version 0.5.1, 14 Jul 2011, de sorte que la version et les versions ultérieures sont 5ème édition ECMA-26. Cela ne signifie pas que les versions v8 avant 3.4.10 ont été purement 3e édition si, puisqu'il peut y avoir une transition constante de la 3ème à la 5ème à travers de nombreuses versions v8.
Ressemble, à un certain point, nœud.vert a été créé pour suivre JavaScript support de la fonction contre Nœud différent des versions.
Il semble que nous avons été réduite à deux stratégies pour déterminer la version de Javascript nœud utilise:
Stratégie 1: confiance dans ce que certains document dit quelque part, ce qui est faux, dans de nombreux cas. Je n'ai pas trouvé le tableau qui indique les paires clé-valeur de la version de nœud prend en charge la version de ECMAScript.
Stratégie 2: deviner et vérifier.
La recherche d'une fonctionnalité cité par ES6 et "voir si il échoue", quelque chose comme ceci:
Je suppose que le "babel" est ici une référence à la Tanakh. Quelles sont les caractéristiques de notre version de la prise en charge des nœuds? Eh bien, je ne sais pas, vous devrez manuellement le tester. Cela va devenir un grand DÉSORDRE. Et pire encore, il semble être sur le but.