Heim  >  Artikel  >  Web-Frontend  >  Unterschied zwischen JavaScript und ECMAScript

Unterschied zwischen JavaScript und ECMAScript

php中世界最好的语言
php中世界最好的语言Original
2017-11-17 10:16:491865Durchsuche

Viele Leute haben gefragt, welche Beziehung zwischen JavaScript und ECMAScript besteht. Gab es vorher Unterschiede zwischen ihnen? Heute werde ich Ihnen eine detaillierte Erklärung dieser Probleme zu JavaScript und ECMAScript geben.

Ich habe versucht, auf Baidu nach „dem Unterschied zwischen JavaScript und ECMAScript“ zu suchen.

Am Ende habe ich viele verwirrende und widersprüchliche Ergebnisse erhalten:

„ECMAScript ist der Standard.“

„JavaScript ist der Standard.“

„JavaScript ist der ECMAScript-Standard.“ „

“ ECMAScript ist standardisiertes JavaScript. „

“ ECMAScript ist eine Sprache. „

“ ECMAScript ist JavaScript.

Halt durch, weine nicht. Ich wappnete mich und beschloss, einige schmerzhafte, aber fruchtbare Nachforschungen anzustellen.

Dieser Artikel stellt mein aktuelles Verständnis der Unterschiede zwischen JavaScript und ECMAScript dar. Dieser Artikel richtet sich an diejenigen, die mit JavaScript vertraut sind, aber besser verstehen möchten, wie es mit ECMAScript, Webbrowsern, Babel usw. zusammenhängt. Darüber hinaus erfahren Sie mehr über Skriptsprachen, die JavaScript-Engine und die JavaScript-Laufzeit.

Dann Kopf hoch.

JavaScript/ECMAScript-Glossar

Was folgt, ist eine Reihe von Definitionen, bei denen der Schwerpunkt auf Konsistenz und Klarheit liegt. Die Definition ist nicht vollständig. Sie sollen die Zusammenhänge und Beziehungen zwischen JavaScript und ECMAScript auf hohem Niveau veranschaulichen.

Lasst uns ohne weitere Umschweife beginnen.

Ecma International

Eine Organisation, die Standards für Wissenschaft und Technologie setzt.

Um ein „Standard“-Beispiel zu geben (obwohl es nicht von Ecma erfunden wurde), verwenden wir die Tastatur, die wir verwendet haben. Sind die meisten Buchstaben in der gleichen Reihenfolge, eine Leertaste, eine Eingabetaste, Pfeiltasten und die Zahlen in der oberen Reihe? Dies liegt daran, dass die meisten Tastaturhersteller ihre Tastaturdesigns auf dem QWERTZ-Layoutstandard basieren.

ECMA-262 Dies ist ein von Ecma International veröffentlichter Standard. Es enthält Spezifikationen für eine universelle Skriptsprache. ECMA-262 ist ein QWERTY-ähnlicher Standard, der jedoch keine Tastaturschichtspezifikation, sondern eine Spezifikation für eine Skriptsprache namens ECMAScript enthält. Stellen Sie sich ECMA-262 als Referenznummer für ECMAScript vor.

Skriptsprache

Eine Programmiersprache, die speziell für den Betrieb auf einer vorhandenen Entität oder einem vorhandenen System entwickelt wurde.

Um eine allgemeine Vorstellung davon zu bekommen, wie man aus einer Programmiersprache eine Skriptsprache macht, betrachten Sie die Befehle „walk“, „run“ und „jump“. Diese Aktionen erfordern etwas, das sie antreibt, vielleicht eine Person, einen Hund oder eine Videospielfigur. „Gehen“, „Laufen“ und „Springen“ sind ohne einen Operator, der diese Befehle ausführt, bedeutungslos. Diese Reihe von Operationen ähnelt Skriptsprachen, die sich auf die Manipulation externer Entitäten konzentrieren.

ECMAScript


Die in ECMA-262 definierte Spezifikation ist ein Standard für die Erstellung allgemeiner Skriptsprachen.

Synonyme: ECMAScript-Spezifikation

ECMA-262 ist jedoch der Name des Standards, der die Skriptsprachenspezifikation ECMAScript darstellt.

ECMAScript stellt Regeln, Details und Richtlinien bereit, die Skriptsprachen einhalten müssen. Dies sind die Kriterien, damit es als ECMAScript-kompatibel gilt.

JavaScript


Eine universelle Skriptsprache, die der ECMAScript-Spezifikation folgt.

Es handelt sich um eine abgespaltene Version der ECMAScript-Sprache.

JavaScript ist die Kaffeesprache, die ich gerne programmiere (bezogen auf die Java-Familie, Anmerkung des Übersetzers). ECMAScript ist die Spezifikation, auf der es basiert. Durch das Lesen der ECMAScript-Spezifikation erfahren Sie, wie Sie eine Skriptsprache erstellen. Durch das Lesen der JavaScript-Dokumentation erfahren Sie, wie Sie die Skriptsprache verwenden.

Wenn Menschen JavaScript als „Dialekt der ECMAScript-Sprache“ bezeichnen, meinen sie dasselbe, als wenn sie über englische, französische oder chinesische Dialekte sprechen. Ein Dialekt leitet den größten Teil seines Vokabulars und seiner Grammatik von seiner Muttersprache ab, weicht jedoch so weit ab, dass es sich lohnt, diese Unterschiede beizubehalten.


JavaScript implementiert den größten Teil der in ECMA-262 beschriebenen ECMAScript-Spezifikation, mit einigen Unterschieden. Mozilla beschreibt hier die Nicht-ECMAScript-Sprachfunktionen von JavaScript:

JavaScript Engine Ein Programm oder Interpreter, der JavaScript-Code verstehen und ausführen kann.

Synonyme: JavaScript-Interpreter, JavaScript-Implementierung

JavaScript-Engines sind häufig in Webbrowsern zu finden, darunter V8 in Chrome, SpiderMonkey in Firefox und Chakra in Edge. Jede Engine ist wie ein Sprachmodul für ihre Anwendung und ermöglicht es ihr, einen bestimmten Zweig der JavaScript-Sprache zu unterstützen.

Die JavaScript-Engine ist für den Browser das, was Menschen als Sprache verstehen. Nehmen wir noch einmal das Beispiel „Gehen“, „Laufen“ und „Springen“ in unserem täglichen Verhalten. Eine JavaScript-Engine ist der grundlegende Mechanismus, der die Bedeutung dieser Aktionen wirklich verstehen kann.

Diese Metapher kann uns helfen, etwas über Browser zu erklären:

Unterschiede in der Browserleistung

Zwei Personen erkennen möglicherweise den Befehl „Sprung“, aber eine Person reagiert möglicherweise schneller auf den Befehl als die andere Person, da sie den Befehl schneller versteht und verarbeitet als die andere. Ebenso verstehen beide Browser JavaScript-Code, aber einer läuft schneller, weil seine JavaScript-Engine effizienter implementiert ist.

Unterschiede in der Browserunterstützung Auch hier gibt es Unterschiede, sogar zwischen Menschen, die dieselbe Sprache sprechen. Obwohl viele Menschen Englisch sprechen, kennen einige möglicherweise bestimmte Wörter, Ausdrücke und grammatikalische Regeln, die andere nicht kennen, und umgekehrt. Das Gleiche gilt für Browser. Obwohl alle Browser-JavaScript-Engines JavaScript verstehen, verstehen einige Browser JavaScript besser als andere. Dieser Unterschied besteht in der Browserunterstützung für JavaScript.

Was die Browserunterstützung betrifft, spricht man normalerweise eher von „ECMAScript-Kompatibilität“ als von „JavaScript-Kompatibilität“, obwohl die JavaScript-Engine JavaScript analysiert und ausführt. Diese Frage ist etwas kompliziert und die folgende Tabelle kann sie erklären.

Wenn Sie sich erinnern, ist ECMAScript eine Spezifikation, die vorschreibt, wie eine Skriptsprache aussehen kann. Die Veröffentlichung einer neuen ECMAScript-Version bedeutet nicht, dass alle vorhandenen JavaScript-Engines plötzlich über diese neuen Funktionen verfügen. Es hängt davon ab, ob die Gruppe oder Organisation, die für diese JavaScript-Engine verantwortlich ist, auf die neueste ECMAScript-Spezifikation aktualisieren und die damit verbundenen Änderungen übernehmen möchte.


Daher neigen Entwickler dazu, Fragen zu stellen wie: „Welche Version von ECMAScript unterstützt dieser Browser?“ oder „Welche ECMAScript-Funktionen unterstützt dieser Browser?“ ob Google, Mozilla und Microsoft damit begonnen haben, die JavaScript-Engines ihrer Browser wie V8, SpiderMonkey und Chakra zu aktualisieren, um über die neueste ECMAScript-Funktionalität zu verfügen.


Die ECMASCript-Kompatibilitätsliste ist eine großartige Referenz für Antworten auf Fragen wie diese.

Wenn eine neue Version von ECMAScript veröffentlicht wird, integriert die JavaScript-Engine nicht alle Updates auf einmal. Sie werden nach und nach ECMAScript-Funktionalität hinzufügen, was aus dem JavaScript-Änderungsprotokoll von Firefox hervorgeht:

JavaScript-Laufzeit

Die Umgebung, in der JavaScript-Code ausgeführt und von der JavaScript-Engine interpretiert wird. Die Laufzeit stellt Hostobjekte bereit, die JavaScript ausführen und bearbeiten kann.

Synonyme: Die JavaScript-Laufzeitumgebung der Hostumgebung ist die „vorhandene Entität oder das vorhandene System“, die in der Definition der Skriptsprache erwähnt wird. Der Code wird durch die JavaScript-Engine geleitet und sobald er analysiert und verstanden wurde, führt die Entität oder das System das interpretierte Verhalten aus. Ein Hund geht spazieren, ein Mensch rennt, eine Videospielmission springt (oder zerstört wie im obigen Beispiel). Eine Anwendung stellt sich für JavaScript-Skripte zur Verfügung, indem sie zur Laufzeit ein „Hostobjekt“ bereitstellt. Für den Client kann die JavaScript-Laufzeitumgebung ein Webbrowser sein. In diesem Fall können Hostobjekte wie Fenster oder HTML-Dokumente für Operationen verwendet werden. Haben Sie jemals ein Fenster- oder Dokument-Hosting-Objekt verwendet? Ansichts- und Dokumentobjekte sind nicht wirklich Teil der Kernsprache von JavaScript. Dabei handelt es sich um Web-APIs, vom Browser bereitgestellte Objekte, die als JavaScript-Hosting-Umgebung fungieren. Für die Serverseite ist die JavaScript-Laufzeit Node.js. Serverbezogene Hosting-Objekte wie Dateisystem, Verarbeitung und Anforderungen werden in Node.js bereitgestellt. Ein interessanter Punkt ist, dass verschiedene JavaScript-Laufzeiten dieselbe JavaScript-Engine verwenden können. V8 ist beispielsweise die JavaScript-Engine, die sowohl von Google Chrome als auch von Node.js verwendet wird – zwei völlig unterschiedlichen Umgebungen.

ECMAScript 6

Es ist die sechste Version des ECMA-262-Standards und enthält wesentliche Änderungen und Verbesserungen an der ECMAScript-Spezifikation.

Synonyme: ES6, ES2015 und ECMAScript 2015

Diese Version von ECMAScript hat ihren Namen von ES6 in ES2015 geändert, da Ecma International beschlossen hat, ECMAScript einmal im Jahr zu veröffentlichen. Dementsprechend hat Ecma International auch damit begonnen, neue Versionen der ECMAScript-Spezifikation zu benennen, die auf den jedes Jahr veröffentlichten Versionen basieren. Kurz gesagt, ES6 und ES2015 sind zwei verschiedene Namen für dasselbe.

Babel

Ein Transpiler, der ES6-Code in ES5-Code konvertieren kann.

Entwickler können die auffälligen neuen Funktionen in ES6 nutzen, müssen sich aber Sorgen um die browserübergreifende Kompatibilität ihrer Webanwendungen machen. Zum Zeitpunkt des Verfassens dieses Artikels unterstützen Edge und Internet Explorer die Funktionen der ES6-Spezifikation nicht vollständig.

Besorgte Entwickler können Bable verwenden, um ES6-Code in eine Version mit der gleichen Funktionalität, aber mit ES5-Funktionen zu konvertieren. Alle gängigen Browser unterstützen ES5 vollständig, sodass Sie Ihren Code ohne Bedenken ausführen können.

Eine interessante Anekdote

Ich hoffe, diese Informationen über JavaScript und ECMAScript sind für Sie nützlich. Bevor wir zum Schluss kommen, möchte ich noch ein paar weitere Informationen weitergeben, die einen neuen Webentwickler wie mich aufklären werden.

Was war zuerst, das Huhn oder das Ei

Eine der verwirrenden Geschichten von JavaScript ist, dass es 1996 entwickelt wurde. Anschließend wurde es 1997 zur Standardisierungsarbeit bei ECMA International eingereicht, was zur Geburt von ECMAScript führte. Da JavaScript mit der ECMAScript-Spezifikation übereinstimmt, kann gleichzeitig gesagt werden, dass JavaScript ein Beispiel ist, das gemäß ECMAScript implementiert ist.

Was für uns interessant ist, ist, dass ECMAScript auf JavaScript basiert und JavaScript auf ECMAScript basiert.

Okay, ich weiß, das klingt wie eine Person, die durch die Zeit reist und ihre Eltern wird – ein bisschen widersprüchlich, aber dennoch ziemlich lustig, wenn ich darüber nachdenke.

Fazit

Ich weiß, das Lesen dieses Artikels hat Ihnen viel Freude bereitet, aber die Menge an Informationen ist immer noch sehr reichhaltig. Ich muss mich noch einmal verabschieden.

Wenn Sie Fragen, Kommentare, Vorschläge oder Überlegungen haben, lassen Sie es uns bitte wissen.

Vielen Dank, dass Sie das gelesen haben!

Verwandte Empfehlungen:

JavaScript einfache Rückkehr zum Top-Code und den Kommentaren

Beispiel für die JavaScript-Implementierung eines Dropdown-Menüs

ECMAScript-Grundkenntnisse_Javascript-Kenntnisse

Das obige ist der detaillierte Inhalt vonUnterschied zwischen JavaScript und ECMAScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn