KAPITEL 1
EinfĂŒhrung in JavaScript
JavaScript ist die Programmiersprache des Webs. Der weitaus gröĂte Teil moderner Websites nutzt JavaScript, und alle modernen Webbrowser â auf Desktops, Tablets und Smartphones â besitzen JavaScript-Interpreter, was JavaScript zur am hĂ€ufigsten eingesetzten Programmiersprache ĂŒberhaupt macht. In den letzten zehn Jahren hat Node.js die JavaScript-Programmierung auch auĂerhalb von Webbrowsern ermöglicht, und der dramatische Erfolg von Node hat dazu gefĂŒhrt, dass JavaScript nun auch die unter Softwareentwicklern am hĂ€ufigsten verwendete Programmiersprache ist. Egal ob Sie bei null anfangen oder JavaScript bereits professionell einsetzen, dieses Buch wird Ihnen dabei helfen, diese Sprache zu beherrschen.
Wenn Sie schon mit anderen Programmiersprachen vertraut sind, ist es vielleicht hilfreich, zu wissen, dass es sich bei JavaScript um eine dynamische, interpretierte Hochsprache handelt, die fĂŒr objektorientierte wie auch funktionale Programmierstile sehr gut geeignet ist. Die Variablen von JavaScript sind untypisiert. Ihre Syntax basiert lose auf Java, aber die Sprachen sind ansonsten nicht miteinander verwandt. JavaScript leitet seine erstklassigen Funktionen von Scheme und seine prototypenbasierte Vererbung von der wenig bekannten Sprache Self ab. Sie mĂŒssen aber diese Sprachen weder kennen noch auch nur mit den Begriffen vertraut sein, um dieses Buch verwenden und JavaScript erlernen zu können.
Der Name »JavaScript« ist leicht irrefĂŒhrend. Abgesehen von einer oberflĂ€chlichen Ăhnlichkeit der Syntax unterscheidet sich JavaScript komplett von Java. DarĂŒber hinaus ist JavaScript lĂ€ngst ĂŒber seine Wurzeln als Skriptsprache hinausgewachsen und zu einer robusten und effizienten Allzwecksprache geworden, die sich fĂŒr ernsthaftes Softwareengineering und fĂŒr Projekte mit riesigen Codebasen eignet.
Damit man eine Sprache nutzen kann, muss sie eine Plattform- bzw. Standardbibliothek besitzen, um zum Beispiel die Ein- und Ausgabe zu ermöglichen. Der Sprachkern von JavaScript legt eine minimale API fĂŒr den Umgang mit Zahlen, Text, Arrays, Sets, Maps usw. fest, besitzt aber keine Ein- und AusgabefunktionalitĂ€t. Diese (und fortgeschrittenere Features der Bereiche Netzwerk, Speicher und Grafik) liegen ganz in der Verantwortung der Hostumgebung, in die JavaScript eingebettet ist.
JavaScript: Namen, Versionen und Modi
JavaScript wurde in den frĂŒhen Tagen des Webs bei Netscape entwickelt, und die Bezeichnung JavaScript selbst ist ein von Sun Microsystems (jetzt Oracle) lizenziertes Warenzeichen, das zur Beschreibung der Implementierung der Sprache durch Netscape (jetzt Mozilla) verwendet wird. Netscape hatte die Sprache zur Standardisierung bei der ECMA eingereicht â der European Computer Manufacturers Association â, und aufgrund von Markenrechtsproblemen erhielt die standardisierte Version der Sprache den sperrigen Namen »ECMAScript«. In der Praxis spricht aber eigentlich jeder von JavaScript. In diesem Buch werden der Name ECMAScript und die AbkĂŒrzung ES benutzt, um speziell auf den Sprachstandard und auf bestimmte Versionen dieses Standards hinzuweisen.
In den 2010er-Jahren wurde von allen Webbrowsern ĂŒberwiegend Version 5 des ECMAScript-Standards unterstĂŒtzt. Deshalb wird in diesem Buch ES5 als die KompatibilitĂ€ts-Baseline betrachtet, sodass frĂŒhere Versionen der Sprache nicht behandelt werden. ES6 wurde 2015 veröffentlicht und fĂŒgte wichtige neue Funktionen â darunter die Klassen- und Modulsyntax â hinzu, die JavaScript von einer Skriptsprache in eine ernst zu nehmende, allgemein einsetzbare Sprache verwandelten, die sich auch fĂŒr die Softwareentwicklung in groĂem MaĂstab eignet. Seit ES6 wird die ECMAScript-Spezifikation jĂ€hrlich ĂŒberarbeitet, und die Versionen der Sprache â ES2016, ES2017, ES2018, ES2019 und ES2020 usw. â werden jetzt nach dem Jahr der Veröffentlichung benannt.
WĂ€hrend der Entwicklung von JavaScript versuchten die Sprachdesigner, Fehler in den frĂŒhen Versionen (vor ES5) zu korrigieren. Um die AbwĂ€rtskompatibilitĂ€t aufrechtzuerhalten, ist es nicht möglich, Ă€ltere Sprachmerkmale (sogenannte Legacy-Features) zu entfernen, egal wie mangelhaft sie sind. Aber in ES5 und spĂ€teren Versionen können Programme in den Strict Mode â den strikten oder strict-Modus â von JavaScript wechseln, in dem eine Reihe von frĂŒhen Sprachfehlern korrigiert wurde. Um diesen Modus zu aktivieren, benutzt man die »use strict«-Anweisung, die in 5.6.3 besprochen wird. Dieser Abschnitt fasst auch die Unterschiede zwischen Legacy-JavaScript und JavaScript im strict-Modus zusammen. In ES6 und spĂ€ter aktiviert die Verwendung neuer Sprachfunktionen oft implizit den strict-Modus. Wenn Sie beispielsweise das ES6-SchlĂŒsselwort class verwenden oder ein ES6-Modul erstellen, ist der gesamte Code innerhalb der Klasse oder des Moduls automatisch »strict«, und die alten, mangelhaften Funktionen sind in diesen Kontexten nicht verfĂŒgbar. In diesem Buch behandle ich auch die Legacy-Features von JavaScript, weise aber darauf hin, dass diese im strict-Modus nicht verfĂŒgbar sind.
Die ursprĂŒngliche Hostumgebung fĂŒr JavaScript war ein Webbrowser, und das ist immer noch die am hĂ€ufigsten verwendete AusfĂŒhrungsumgebung fĂŒr JavaScript-Code. In einer We...