web-dev-qa-db-fra.com

Quelle est la différence entre JavaScript et ECMAScript?

Quelle est la différence entre ECMAScript et JavaScript? De ce que j'ai déduit, ECMAScript est la norme et JavaScript est la mise en œuvre. Est-ce correct?

441
Guy

ECMAScript est le langage, alors que JavaScript, JScript et même ActionScript 3 sont appelés "dialectes". Wikipedia fait la lumière sur cela.

182
Ryan Florence

Je pense qu'une petite leçon d'histoire est due.

JavaScript s'appelait à l'origine Mocha et a été remplacé par Livescript avant de devenir JavaScript.

Il est important de noter que JavaScript est venu avant ECMAscript et l'historique vous expliquera pourquoi.

Pour commencer, JavaScript tire son nom de Java et initialement Brendan Eich (le créateur de JS) a été invité à développer un langage qui ressemblait à Java pour le Web pour Netscape.

Eich, cependant, a décidé que Java était trop compliqué avec toutes ses règles et a donc décidé de créer un langage plus simple que même un débutant pourrait coder. Cela est évident dans des choses comme le relâchement de la nécessité d'avoir un point-virgule.

Une fois le langage terminé, l’équipe marketing de Netscape a demandé à Sun de lui permettre de le nommer JavaScript cascadeur. C’est pourquoi la plupart des personnes qui n’ont jamais utilisé JavaScript pensent que cela est lié à Java.

Environ un an ou deux après la publication de JavaScript dans le navigateur, le IE de Microsoft a pris le langage et a commencé à créer ses propres implémentations telles que JScript. Dans le même temps, IE dominait le marché et Netscape avait peu de temps pour fermer son projet.

Avant que Netscape ne disparaisse, ils ont décidé de créer une norme qui guiderait le chemin de JavaScript, nommée ECMAScript.

ECMAScript a eu quelques versions et en 1999, il a publié sa dernière version (ECMAScript 3) avant de passer en hibernation pour les 10 prochaines années. Pendant ces 10 années, Microsoft a dominé les scènes mais n’a pas amélioré son produit. Ainsi est né Firefox (dirigé par Eich) et un tas d’autres navigateurs tels que Chrome, Opera.

ECMAScript a publié sa 5ème édition en 2009 (la 4ème édition a été abandonnée) avec des fonctionnalités telles que le mode strict. Depuis lors, ECMAScript a pris beaucoup d’élan et devrait publier sa 6ème édition d’ici quelques mois, avec les changements les plus importants qu’il a connus jusqu’à présent.

Vous pouvez utiliser une liste de fonctionnalités pour ECMAScript 6 ici http://kangax.github.io/es5-compat-table/es6/ et également la prise en charge du navigateur. Vous pouvez même commencer à écrire Ecmascript 6 comme vous le faites avec CoffeeScript et utiliser un compilateur pour compiler Ecmascript 5.

Que ECMAScript soit la langue et que JavaScript soit un dialecte est discutable, mais sans importance. Si vous continuez à penser ainsi, vous risquez de vous dérouter. Il n’existe aucun compilateur là-bas qui exécuterait ECMAScript, et je crois que JavaScript est considéré comme le langage qui implémente une norme appelée ECMAScript.

Il existe également d'autres langages remarquables implémentant ECMAScript, tels que ActionScript (utilisé pour Flash).

573
Yang Li

ECMAScript = ES:

  • ECMAScript est un standard pour les langages de script.

  • Les langages comme Javascript sont basés sur le standard ECMAScript.

  • ECMA Standard repose sur plusieurs technologies d'origine, les plus connues étant JavaScript (Netscape) et JScript (Microsoft).

  • ECMA signifie Association européenne de fabricants d’ordinateurs

JavaScript = JS:

  • JavaScript est l’implémentation la plus répandue de la norme ECMAScript.

  • Les fonctionnalités principales de Javascript sont basées sur la norme ECMAScript, mais Javascript comporte également d'autres fonctionnalités supplémentaires qui ne figurent pas dans les spécifications/normes ECMA.

  • ActionScript et JScript sont d'autres langages qui implémentent ECMAScript.

  • JavaScript a été soumis à l'ECMA pour normalisation, mais en raison de problèmes de marque portant le nom Javascript, la norme est devenue ECMAScript.

  • Chaque navigateur a un interprète JavaScript.

ES5 = ECMAScript 5:

  • ES5 est une version de ECMAScript (ancienne/actuelle).

  • ES5 est le code JavaScript que vous connaissez et utilisez dans le navigateur actuel.

  • ES5 ne nécessite aucune étape de construction (transpilers) pour le transformer en quelque chose qui fonctionnera dans les navigateurs actuels.

  • La version 5 d’ECMAScript s’est achevée en décembre 2009 et les versions les plus récentes de tous les principaux navigateurs (Chrome, Safari, Firefox et IE) ont implémenté la version 5.

  • La version 5.1 a été terminée en juin 2011.

ES6 = ECMAScript 6 = ES2015 = ECMAScript 2015:

  • ES2015 est une version de l'ECMAScript (nouveau/futur).

  • Officiellement, le nom ES2015 devrait être utilisé à la place de ES6.

  • ES6 résoudra nombre des faiblesses du langage central abordées dans TypeScript et CoffeeScript.

  • ES6 est la prochaine itération de JavaScript, mais il ne s'exécute pas dans les navigateurs actuels.

  • Il existe de nombreux transpilers qui exporteront ES5 pour les exécuter dans les navigateurs.

BabelJS:

  • BabelJS est le transpiler le plus populaire qui transforme le nouveau JavaScript ES6 en ancien JavaScript ES5.

  • BabelJS permet d’écrire la nouvelle génération de JavaScript aujourd’hui (signifie ES2015).

  • BabelJS prend simplement le fichier ES2015 et le transforme en fichier ES5.

  • Les versions actuelles des navigateurs peuvent désormais comprendre le nouveau code JavaScript (ES2015), même si elles ne le prennent pas encore en charge.

TypeScript et CoffeeScript:

  • Les deux fournissent du sucre syntaxique au-dessus de ES5, puis sont transcompilés en JavaScript compatible ES5.

  • Vous écrivez TypeScript ou CoffeeScript, puis le transpiler le transforme en JavaScript ES5.

142
Mahmoud Zalt

Techniquement, ECMAScript est le langage que tout le monde utilise et implémente. Il s'agit de la spécification créée il y a de nombreuses années lorsque Netscape et Microsoft ont tenté d'assurer la normalisation des scripts entre JavaScript (langage de script de Netscape) et JScript (de Microsoft).

Par la suite, tous ces moteurs implémentent apparemment ECMAScript. Cependant, JavaScript (son nom) traîne maintenant pour les deux raisons de nommage traditionnelles, et comme terme marketing par Mozilla pour ses diverses extensions non standard (qu’elles veulent pouvoir réellement "version" )

42
olliej

JavaScript = ECMAScript + DOM + BOM ;

  • ECMAScript® Language Specification définit toute la logique pour la création et la modification d'objets, de tableaux, de nombres, etc.

  • DOM (D document O bject M odel) permet de communiquer avec des documents HTML/XML (par exemple, document.getElementById('id');).

  • BOM (B Rower O bject M odel) est la hiérarchie des objets de navigateur (par exemple, un objet location, un objet historique, des éléments de formulaire).

Histoire de la dénomination JavaScript:

Mocha ► LiveScript ► JavaScript ► (une partie de JS a résulté) ECMA-262 ► ECMAScript ► JavaScript (constitué de ECMAScript + DOM + BOM)

34
jerone

Qu'est-ce que ECMAScript, c'est-à-dire ES?

ECMAScript est un standard pour un langage de script et le langage Javascript est basé sur le standard ECMAScript.

Javascript est-il exactement le même que ECMAScript?

  • Non, Javascript n'est pas exactement équivalent à ECMAScript.
  • Les fonctionnalités principales de Javascript sont basées sur la norme ECMAScript, mais Javascript comporte également d'autres fonctionnalités supplémentaires qui ne figurent pas dans les spécifications/normes ECMA.

JavaScript = ECMAScript + API DOM;

API DOM comme: document.getElementById('id');

D'autres langues utilisent-elles le standard ECMAScript?

  • Oui, il existe des langages autres que JavaScript qui implémentent également le standard ECMAScript.
  • ActionScript (utilisé par Adobe Flash) et JScript (utilisé par Microsoft) sont deux langages qui implémentent le standard ECMAScript.

Pourquoi s'appelle-t-il ECMAScript?

  • Javascript a été créé à l'origine chez Netscape, et ils voulaient normaliser le langage. Ainsi, ils ont soumis la langue à E uropean C ordinateur M du fabricant A = association (ECMA) pour la normalisation.
  • Cependant, le nom Javascript présentait des problèmes de marque et la norme est devenue ECMAScript, qui est également le nom qu’elle porte aujourd’hui.
  • En raison de problèmes de marques commerciales, la version de Microsoft du langage s'appelle JScript - même si JScript est, à la base, le même langage que Javascript.
27
Imran

Diverses versions de JavaScript sont des implémentations du standard ECMAScript.

16
canen

D'après ce que j'ai compris, ECMAScript est la "théorie" ou la "spécification", et Javascript est "pratique" ou "implémentation".

11
Rethna

je sais que c'est un vieux post, mais j'espère que cela aidera quelqu'un.

Dans les années 1990, différentes versions de js ont commencé à sortir, comme javascript de Netscape, script Js de Microsoft. Donc ecmascript a été introduit en tant que norme. Mais ecmascript ne constitue qu’une partie du javascript qui spécifie sa syntaxe principale, ses types, ses objets, etc. Cela explique probablement les implémentations incohérentes de javascript dans diff. navigateurs

Référence - Wrox (Javascript professionnel pour les développeurs Web)

11
depz123

JavaScript est a langage ECMAScript.

ECMAScript n'est pas nécessairement JavaScript.

9
ryansstack

Les réponses existantes résument assez bien le point principal.

Le point principal est que ECMAScript est le langage abstrait abstrait, sans extension spécifique à un domaine, inutile en soi. Le spécification définit uniquement le langage et ses objets principaux.

Tandis que JavaScript, ActionScript et d'autres dialectes lui ajoutent la bibliothèque spécifique au domaine, vous pouvez l'utiliser à des fins utiles.

Il y a beaucoup de moteurs ECMAScript , certains sont open source, d'autres sont propriétaires. Vous pouvez les lier à votre programme, puis ajouter vos fonctions natives à l'objet global pour que votre programme devienne un script. Bien que le plus souvent, ils sont utilisés dans les navigateurs.

7
Calmarius

Javascript était le nom d'origine, destiné à capitaliser sur la popularité de Java. L’ECMA est l’organisme de normalisation qui supervise la norme qui a finalement été mise en place, de sorte que les noms sont à peu près équivalents.

Les implémentations ont d'autres noms, comme V8 ou Rhino, etc.

5
Jeremy Huiskamp

ECMAScript est un standard pour JavaScrip t, regardez ces instructions à partir de MDN:

enter image description here

JavaScript

JavaScript (JS) est un langage de programmation interprété léger ou compilé par JIT avec des fonctions de première classe. Bien qu'il soit plus connu comme langage de script pour les pages Web, de nombreux environnements autres que les navigateurs l'utilisent également, tels que node.js, Apache CouchDB et Adobe Acrobat. JavaScript est un langage dynamique basé sur un prototype, comportant plusieurs paradigmes et prenant en charge les styles orienté objet, impératif et déclaratif (par exemple, programmation fonctionnelle). En savoir plus sur JavaScript.


ECMAScript

La norme pour JavaScript est ECMAScript . Depuis 2012, tous les navigateurs modernes prennent entièrement en charge ECMAScript 5.1. Les navigateurs plus anciens prennent en charge au moins ECMAScript 3. Le 17 juin 2015, ECMA International a publié la sixième version majeure d’ECMAScript, officiellement appelée ECMAScript 2015, qui était initialement appelée ECMAScript 6 ou ES6. Depuis lors, les normes ECMAScript sont sur des cycles de publication annuels. Cette documentation fait référence à la dernière version préliminaire, qui est actuellement ECMAScript 2018.

Pour plus d'informations, visitez ici

3
Alireza

Voici mes conclusions:

JavaScript: Le Guide définitif , écrit par David Flanagan fournit une explication très concise:

JavaScript a été créé chez Netscape aux débuts du Web et, techniquement, "JavaScript" est une marque commerciale sous licence de Sun Microsystems (maintenant Oracle) utilisée pour décrire la mise en oeuvre du langage par Netscape (maintenant Mozilla). Netscape a soumis le langage de normalisation à l'ECMA et, en raison de problèmes de marque, la version normalisée du langage était bloquée du nom peu pratique "ECMAScript". Pour les mêmes raisons de marque, la version du langage de Microsoft est officiellement appelée "JScript". En pratique, à peu près tout le monde appelle le langage JavaScript.

A blog de Microsoft semble être d’accord avec ce que Flanagan explique en disant ..

ECMAScript est le nom officiel du langage JavaScript que nous connaissons et aimons tous.

..qui me fait penser que toutes les occurrences de JavaScript dans this référence post (de Microsoft à nouveau) doivent être remplacées par ECMASCript. Ils semblent en fait être prudents avec l'utilisation de ECMAScript uniquement dans la page de documentation this , plus récente et plus technique.

w3schools.com semble être d'accord avec les définitions ci-dessus:

JavaScript a été inventé par Brendan Eich en 1995 et est devenu une norme ECMA en 1997. ECMA-262 est le nom officiel de la norme. ECMAScript est le nom officiel de la langue.

La clé ici est: le nom officiel de la langue .

Si vous cochez pages de la version JavaScript de Mozilla , vous rencontrerez la déclaration suivante:

Obsolète Le contrôle de version explicite et l'opt-in des fonctionnalités du langage étaient spécifiques à Mozilla et sont en cours de suppression. Firefox 4 était la dernière version faisant référence à une version JavaScript (1.8.5). Avec les nouvelles normes ECMA, les fonctionnalités du langage JavaScript sont maintenant souvent mentionnées avec leur définition initiale dans les éditions ECMA-262 telles que ECMAScript 2015.

et lorsque vous consultez les dernières notes de publication, vous verrez toujours une référence aux normes ECMAScript, telles que:

  • La propriété ES2015 Symbol.toStringTag a été implémentée (bogue 1114580).

  • Les méthodes ES2015 TypedArray.prototype.toString () et TypedArray.prototype.toLocaleString () ont été implémentées (bogue 1121938).

Mozilla Web Docs a également une page qui explique la différence entre ECMAScript et JavaScript:

Cependant, le terme générique "JavaScript", tel qu'il est compris dans le contexte d'un navigateur Web, contient plusieurs éléments très différents. L'un d'entre eux est le langage principal (ECMAScript), un autre est la collection des API Web, y compris le DOM (Document Object Model).

Conclusion

À ma connaissance, les gens utilisent le code JavaScript de Word de manière relativement libérale pour faire référence à la spécification ECMAScript principale.

Je dirais que toutes les implémentations JavaScript modernes (ou moteurs JavaScript) sont en fait des implémentations ECMAScript. Vérifiez la définition de moteur V8 de Google, par exemple:

V8 est le moteur JavaScript hautes performances et open source de Google, écrit en C++ et utilisé dans Google Chrome, le navigateur Open Source de Google, et dans Node.js, entre autres. Il implémente ECMAScript comme spécifié dans ECMA-262.

Ils semblent utiliser le code JavaScript Word et ECMAScript de manière interchangeable, et je dirais que c'est en fait un moteur ECMAScript?

Ainsi, la plupart des moteurs JavaScript implémentent la norme ECMAScript, mais au lieu de les appeler moteurs ECMAScript, ils s’appellent eux-mêmes moteurs JavaScript. This answer soutient également la façon dont je vois la situation.

2
Koray Tugay

Je doute que nous ayons jamais utilisé le mot "ECMAScript" sans le fait que le nom "JavaScript" est la propriété de Sun. Pour toutes fins utiles, le langage est JavaScript. Vous n'allez pas à la librairie à la recherche de livres ECMAScript, n'est-ce pas?

C'est un peu trop simple de dire que "JavaScript" est l'implémentation. JScript est l'implémentation de Microsoft.

2
Nosredna

JavaScript est une branche de langages formée autour du standard ECMAScript. Je crois que l’ECMA est l’Association européenne des fabricants d’ordinateurs, ce qui n’est pas vraiment pertinent.

N'oubliez pas un autre langage populaire formé autour du standard ECMA Script, ActionScript, utilisé dans Adobe Flash/Flex.

1
JAL