www.wikidata.de-de.nina.az
JavaScript kurz JS ist eine Skriptsprache die ursprunglich 1995 von Netscape fur dynamisches HTML in Webbrowsern entwickelt wurde um Benutzerinteraktionen auszuwerten Inhalte zu verandern nachzuladen oder zu generieren und so die Moglichkeiten von HTML zu erweitern 2 Heute wird JavaScript auch ausserhalb von Browsern angewendet etwa auf Servern und in Microcontrollern 3 4 JavaScript Beispiel JavaScript function halloWelt alert Hello World window onload halloWelt BasisdatenParadigmen multiparadigmatischErscheinungsjahr 1995Designer Brendan EichEntwickler Brendan EichAktuelle Version ECMAScript 2023 1 Juni 2023 Typisierung schwach dynamisch duckWichtige Implementierungen SpiderMonkey Rhino JavaScriptCore V8Beeinflusst von Self C Scheme Perl Python Java LuaBeeinflusste ActionScript Haxe CoffeeScript Dart TypeScriptLizenz BSDwww ecma international org publications and standards standards ecma 262 Der heutige Name der ursprunglich LiveScript genannten Sprache entstand 1996 aus einer Kooperation von Netscape mit Sun Microsystems Deren Java Applets erstellt mit der gleichfalls 1995 veroffentlichten Programmiersprache Java wurden mithilfe von LiveScript in den Netscape Navigator integriert Um die Popularitat von Java zu nutzen wurde LiveScript in JavaScript umbenannt obwohl die beiden Sprachen voneinander unabhangig entwickelt wurden und vollig unterschiedliche Grundkonzepte aufweisen Der als ECMAScript ECMA 262 standardisierte Sprachkern von JavaScript beschreibt eine dynamisch typisierte objektorientierte aber klassenlose Skriptsprache Sie wird allen objektorientierten Programmierparadigmen unter anderem auf der Basis von Prototypen gerecht deren Deklaration ab ECMAScript 6 mit einer Syntax ermoglicht wird wie sie ahnlich auch bei klassenbasierten Programmiersprachen ublich ist In JavaScript lasst sich je nach Bedarf objektorientiert prozedural oder funktional programmieren 5 Inhaltsverzeichnis 1 Entwicklung 2 Verwendung 2 1 Typische Anwendungsgebiete 2 2 Missbrauch 3 Geschichte 3 1 Versionsgeschichte von JavaScript 3 2 Versionsgeschichte von ECMAScript ECMA 262 4 Sicherheit 4 1 Sandbox Prinzip 4 2 Deaktivieren von JavaScript 5 Sprachelemente 5 1 Datentypen 5 1 1 Primitive Datentypen 5 1 2 Nicht primitive Datentypen 5 2 Kontrollstrukturen 5 2 1 if else Bedingte Anweisung 5 2 2 switch Kontrollstruktur 5 2 3 while Schleife 5 2 4 do while Schleife 5 2 5 for Schleife 5 2 6 for in Schleife 5 2 7 for of Schleife 5 3 Variablen 5 3 1 Geltungsbereich von Variablen 5 4 Konstanten 5 5 Funktionen 5 5 1 Erzeugung 5 5 2 Beispiel 5 6 Objekte 5 6 1 Vordefinierte Objekte 5 6 2 Zugriff auf Objekteigenschaften und methoden 5 6 3 Objektliterale 5 6 4 Konstruktor Funktionen 5 6 5 Private Eigenschaften 5 6 6 Vererbung uber Prototypen 5 6 7 Fixierung von Objektstruktur und inhalten 5 7 Delegationsprinzipien 5 8 Fehlerbehandlung 6 JavaScript Bibliotheken 7 JavaScript amp Suchmaschinenoptimierung SEO 8 Siehe auch 9 Literatur 10 Weblinks 10 1 Spezifikationen 10 2 Dokumentationen 11 EinzelnachweiseEntwicklung BearbeitenDie Syntax von JavaScript ahnelt C Abkommlingen Trotz der Namens und syntaktischen Ahnlichkeit hat JavaScript nur geringe Gemeinsamkeiten mit Java So wird in JavaScript Vererbung nicht durch Klassen sondern durch Prototypen unterstutzt JavaScript wurde fruher hauptsachlich clientseitig eingesetzt JavaScript bzw die ECMAScript Implementierungen ermoglichen aber beispielsweise mit dem Framework Node js 6 und als JScript bzw JScript NET in einer ASP bzw ASP NET Umgebung auf Microsoft Internet Information Services auch serverseitige Anwendungen Weitere Beispiele fur serverseitige JavaScript Programmierung sind POW und Jaxer die auf der Mozilla JavaScript Engine SpiderMonkey aufsetzen V8CGI welches auf der JavaScript Implementierung V8 aufbaut und in den Apache HTTP Server integriert wird sowie QML eine erweiterte Form von JavaScript zum Zeichnen von Oberflachen und Animationen Die Sprache wird auch als Skriptsprache fur Spiele und Anwendungsprogramme eingesetzt da der Sprachkern nur wenige Objekte enthalt und dadurch der zur Ausfuhrung von in JavaScript formulierten Skripten erforderliche Interpreter relativ klein gehalten werden kann Ausserdem wird JavaScript als Verkehrssprache in der Datenbank MongoDB sowie in Microcontrollern eingesetzt 3 4 Verwendung BearbeitenTypische Anwendungsgebiete Bearbeiten Typische Anwendungsgebiete von JavaScript im Webbrowser sind dynamische Manipulation von Webseiten uber das Document Object Model Plausibilitatsprufung Datenvalidierung von Formulareingaben noch vor der Ubertragung zum Server Anzeige von Dialogfenstern Senden und Empfangen von Daten ohne dass der Browser die Seite neu laden muss Ajax Vorschlagen von Suchbegriffen wahrend der Eingabe Werbebanner oder Laufschriften Verschleierung von E Mail Adressen zur Bekampfung von Spam mehrere Frames auf einmal wechseln oder die Seite aus dem Frameset losen Schreib und Lesezugriff auf Cookies und den Web Storage innerhalb des BrowsersMissbrauch Bearbeiten Einige Anwendungen die mit JavaScript moglich sind agieren teilweise gegen den Wunsch des Benutzers oder widersprechen dem Prinzip der geringsten Uberraschung Einige Browser bieten daher Funktionen an die derartige JavaScript Funktionen unterdrucken Beispiele Hinweis im Firefox Browser bei vielen DialogfensternVerschleiern von Internetadressen auf die ein Link verweist Deaktivieren des Kontextmenus um zu erschweren dass Bilder oder die gesamte Seite abgespeichert werden konnen Deaktivieren der Kopierfunktion um zu erschweren dass Texte oder Bilder kopiert werden konnen Unaufgeforderte Werbe Pop ups oder Pop unders oder aufeinanderfolgende Dialogfenster die den Benutzer behindern Ungewolltes Schliessen des Browserfensters Ungewollte Grossenanderung des Browserfensters Barrierearme Webseiten zeichnen sich dadurch aus dass sie auch bei abgeschaltetem JavaScript moglichst uneingeschrankt nutzbar bleiben Teilweise schrankt das deaktivierte JavaScript die Benutzbarkeit einer Webseite ein Massnahmen die an den Sicherheitseinstellungen des Browsers vorbei ein Wiedererkennen eines Benutzers bei einem spateren Besuch einer Website erlauben siehe Anonymitat im Internet Bei anfalligen Webanwendungen kann JavaScript auch von Dritten missbraucht werden etwa per XSS Codeeinschleusung Geschichte BearbeitenAm 18 September 1995 veroffentlichte Netscape mit der Vorversion des Navigators 2 0 einen Browser mit einer eingebetteten Skriptsprache die zu diesem Zeitpunkt LiveScript hiess und von Brendan Eich entwickelt worden war Die Sprache konnte u a Formulareingaben des Benutzers vor dem Absenden uberprufen Am 4 Dezember 1995 verkundeten Netscape und Sun Microsystems eine Kooperation die die Interaktion von LiveScript direkt mit Java Applets zum Ziel hatte Sun entwickelte die notigen Java Klassen Netscape die Schnittstelle LiveConnect und benannte die Sprache in JavaScript um JavaScript 1 0 7 8 JavaScript ist seit der Ubernahme von Sun Microsystems eine Marke des Unternehmens Oracle 9 Mit der ersten Beta Version des Navigators 3 0 fuhrte Netscape am 29 April 1996 JavaScript 1 1 ein In selbiger Version gab es die Neuerungen auf Bilder zugreifen und sogenannte Rollover Grafiken erstellen zu konnen LiveConnect war jetzt fester Bestandteil des Browsers Mit der Beta Version des Internet Explorers 3 stellte Microsoft im Mai 1996 seinen ersten JScript fahigen Browser vor Dies war der Beginn des Browserkriegs 10 11 Mit der Ankundigung des Netscape Communicators wurde JavaScript 1 2 am 15 Oktober 1996 veroffentlicht der Netscape Communicator 4 0 mit JavaScript 1 2 erschien jedoch erst am 4 Juni 1997 Ebenfalls im Juni 1997 veroffentlichte die European Computer Manufacturers Association ihren Standard ECMA 262 ECMAScript der zusammen mit Netscape entwickelt worden war und die Grundelemente einer Skriptsprache standardisieren sollte Diese wurde im April 1998 zur ISO Norm ISO IEC 16262 1998 Information technology ECMAScript language specification Am 1 Oktober 1997 kam der Internet Explorer 4 heraus der den Sprachumfang von JavaScript 1 1 abdeckte Daruber hinaus wurden eigene Erweiterungen veroffentlicht die zu Kompatibilitatsunterschieden zwischen Navigator und Internet Explorer fuhrten und eine DOM ahnliche Syntax zur Verfugung stellten die es ermoglichte auf alle Elemente der Webseite zuzugreifen und diese beliebig verandern zu konnen Der in Java implementierte JavaScript Interpreter Rhino wurde ab Version 6 0 als Teil der Java Laufzeitumgebung standardmassig mitgeliefert 12 Im Juli 1998 wurde mit der Beta Version des Netscape Communicators 4 5 JavaScript 1 3 welche schon in der Version 4 06 des Netscape Communicators vorhanden war veroffentlicht 13 Im Oktober 1998 stellte Netscape JavaScript 1 4 vor Diese Version war vollstandig kompatibel mit ECMA 262 Ein Browser mit der Unterstutzung dieser Version erschien jedoch nicht 14 15 Im April 2000 kam mit der Preview Release 1 des Navigators 6 JavaScript 1 5 und DOM Level 1 Am 5 Juni 2002 erschien Mozilla 1 0 mit JavaScript 1 5 JavaScript in der Version 1 5 entspricht ECMA 262 Version 3 16 am 29 November 2005 Mozilla Firefox 1 5 mit JavaScript 1 6 17 am 12 Juli 2006 Mozilla Firefox 2 0b1 mit JavaScript 1 7 18 und am 18 Dezember 2007 Mozilla Firefox 3 0b2 mit JavaScript 1 8 19 Versionsgeschichte von JavaScript Bearbeiten Versionsgeschichte 20 Version Veroffentlichung Entsprechung Netscape Navigator Mozilla Firefox Internet Explorer Opera Safari Google ChromeAltere Version nicht mehr unterstutzt 1 0 0 Marz 1996 2 0 3 0Altere Version nicht mehr unterstutzt 1 1 0 August 1996 3 0Altere Version nicht mehr unterstutzt 1 2 0 Juni 1997 4 0 4 05Altere Version nicht mehr unterstutzt 1 3 0 Oktober 1998 ECMA 262 1st edition ECMA 262 2nd edition 4 06 4 7x 4 0Altere Version nicht mehr unterstutzt 1 4 0 Netscape ServerAltere Version nicht mehr unterstutzt 1 5 0 November 2000 ECMA 262 3rd edition 6 0 1 0 5 5 JScript 5 5 6 JScript 5 6 7 JScript 5 7 8 JScript 6 6 0 7 0 8 0 9 0Altere Version nicht mehr unterstutzt 1 6 0 November 2005 1 5 Array extras Array amp String generics E4X 1 5 3 0 3 1Altere Version nicht mehr unterstutzt 1 7 0 Oktober 2006 1 6 Pythonic generators Iterators let destructuring assignments 2 0 3 2 4 0 1 0Altere Version nicht mehr unterstutzt 1 8 0 Juni 2008 1 7 Generator expressions Expression closures 3 0Altere Version nicht mehr unterstutzt 1 8 1 Juni 2009 1 8 geringfugige Updates 3 5Aktuelle Version 1 8 2 Januar 2010 1 8 1 geringfugige Updates 3 6Aktuelle Version 1 8 5 Juli 2010 1 8 1 ECMAScript 5 Compliance 4 9 0 JScript 9 0 Versionsgeschichte von ECMAScript ECMA 262 Bearbeiten Die aktuelle Version ist die Version 2022 die im Juni 2022 als ECMAScript 2022 veroffentlicht wurde 21 Dieser sollen jahrliche Updates folgen 22 Die Entwicklung der Standards erfolgt auf GitHub 23 Version publiziert am Unterschiede zur Vorgangerversion EditorAltere Version nicht mehr unterstutzt 1 Juni 1997 erste Version Guy L Steele Jr Altere Version nicht mehr unterstutzt 2 Juni 1998 Anderungen zwecks Kompatibilitat zum internationalen Standard ISO IEC 16262 Mike CowlishawAltere Version nicht mehr unterstutzt 3 Dez 1999 Neu sind regulare Ausdrucke bessere Verarbeitung von Zeichenketten Kontrollfluss Fehlerbehandlung mit try catch bessere Fehlerbehandlung bessere Formatierung bei der Ausgabe von Zahlen usw Mike CowlishawAltere Version nicht mehr unterstutzt 4 abgebrochen Wegen Uneinigkeit in Bezug auf die Zukunft der Sprache wurde die weitere Entwicklung des komplexen Entwurfes zu ECMAScript 4 eingestellt Einige Ideen werden in ES6 wieder aufleben Altere Version nicht mehr unterstutzt 5 Dez 2009 Im strict mode wird eine erweiterte Fehlerprufung eingeschaltet Unklare Sprachkonstrukte von ECMAScript 3 werden entscharft und neue Features wie getter und setter Methoden Unterstutzung von JSON usw hinzugefugt 24 Pratap Lakshman Allen Wirfs BrockAltere Version noch unterstutzt 5 1 Juni 2011 Entspricht dem internationalen Standard ISO IEC 16262 2011 Version 3 Pratap Lakshman Allen Wirfs BrockAltere Version noch unterstutzt 2015 25 26 Juni 2015 Neue Syntax fur komplexe Applikationen wie Klassen und Module die aber mit ahnlicher Terminologie wie in ECMAScript 5 strict mode definiert werden konnen 27 Neue Sprachbestandteile wie for of Schleifen teilweise an Python angelehnte Syntax usw Der Codename lautet Harmony und wurde bis kurz vor Verabschiedung als ECMAscript 6 bezeichnet 28 Allen Wirfs BrockAltere Version noch unterstutzt 2016 29 30 Juni 2016 Potenzfunktion Array prototype includes diverse Anpassungen an Generatoren destruktiven Zuweisungen 31 Brian TerlsonAltere Version noch unterstutzt 2017 32 Juni 2017 async await diverse Object Funktionen 31 33 34 Brian TerlsonAltere Version noch unterstutzt 2018 Juni 2018 35 global import Rest Spread Properties for await of Asynchronous Iterators String Padding 36 Brian TerlsonAltere Version noch unterstutzt 2019 Juni 2019 Array flat flatMap Object fromEntries String trimStart trimEnd Symbol description 37 Brian Terlson Bradley Farias Jordan HarbandAltere Version noch unterstutzt 2020 Juni 2020 String matchAll BigInt import 38 Jordan Harband Kevin SmithAltere Version noch unterstutzt 2021 Juni 2021 String prototype replaceAll WeakRefs Logical Assignment Operators 39 Jordan Harband Shu yu Guo Michael Ficarra Kevin GibbonsAltere Version noch unterstutzt 2022 40 Juni 2022 Private Methoden und Felder in Klassen Statische Initialisierungs Blocke in Klassen await ausserhalb von async Funktionen 41 Shu yu Guo Michael Ficarra Kevin GibbonsAktuelle Version 2023 Juni 2023 Hashbang Grammar Symbole fur WeakMaps neue Array FunktionenSicherheit BearbeitenSandbox Prinzip Bearbeiten JavaScript wird im Browser in einer sogenannten Sandbox ausgefuhrt Dies soll bewirken dass man in JavaScript nur Zugriff auf die Objekte des Browsers hat und nicht auf das Dateisystem zugreifen kann Eine Ausnahme stellt der Lesezugriff auf eine Datei dar die per Dateiauswahl Dialog gestartet mit dem HTML Element lt input type file gt vom Benutzer ausgewahlt wurde Um Sicherheitsprobleme wie das sogenannte Cross Site Scripting zu verhindern wird jede Website oder Webanwendung innerhalb des Browsers isoliert ausgefuhrt und ein Datenaustausch unterbunden Ohne diesen Schutz ware es moglich uber eine Seite Schadcode auszufuhren der beispielsweise Bank oder Logindaten in anderen parallel geoffneten Browserfenstern ausliest oder manipuliert Auch bestimmte sicherheitsrelevante Browserfunktionen wie das Schliessen des Browserfensters das Aus und Einblenden von Symbolleisten das Andern der Browserstartseite der Zugriff auf die Zwischenablage oder das Auslesen der zuletzt besuchten Webseiten des Anwenders werden durch obligatorische Nutzereingaben geschutzt Standardmassig wird ein Skript innerhalb eines Browsers in Form eines einzigen Threads ausgefuhrt Warteschleifen oder lange Berechnungen sind daher in JavaScript Programmen zu vermeiden Mit Worker Objekten ist es moglich weitere Threads zu erzeugen 42 Deaktivieren von JavaScript Bearbeiten In vielen JavaScript fahigen Browsern lasst sich JavaScript abschalten oder lassen sich einzelne Aktionen wie die Anderung des Textes in der Statusleiste oder die Manipulation von Browserfenstern deaktivieren Dies kann bei einigen Browsern mittels Erweiterungen die JavaScript anhand von White und Blacklists gezielt auf Seiten ein und ausschalten auch automatisiert werden Daher konnen sich Entwickler nicht darauf verlassen dass JavaScript Programme sich in jeder Umgebung gleich verhalten bzw uberhaupt funktionieren Siehe auch Unobtrusive JavaScriptSprachelemente BearbeitenDatentypen Bearbeiten JavaScript ist dynamisch typisiert Das bedeutet dass die Zuweisung von Werten an Variablen keinen typbasierten Einschrankungen unterliegt Allerdings gibt es diverse Erweiterungen von JavaScript die eine statische Typisierung optional beziehungsweise zwingend erfordern zum Beispiel TypeScript von Microsoft 43 Aufgrund der dynamischen Typisierung ist der Datentyp keine Eigenschaft einer Variablen sondern Laufzeit bezogen die Eigenschaft ihres aktuellen Wertes oder auch die Eigenschaft eines Literals Der Datentyp eines Wertes lasst sich mit dem unaren Operator typeof ermitteln Primitive Datentypen Bearbeiten Zu den primitiven Datentypen gehoren Werte fur Zahlen Zeichenketten boolesche Werte und Symbole Zeichenketten haben den Typ String typeof liefert string numerische Werte den Typ Number typeof liefert number boolesche Werte den Typ Boolean typeof liefert boolean Ein weiterer allerdings seltener gebrauchter primitiver Datentyp ist Symbol der als Identifier siehe auch Stichwort Symbol fungiert typeof liefert symbol Ein Sonderfall ist der Typ Undefined mit undefined als einzigem Wert typeof liefert undefined Nicht primitive Datentypen Bearbeiten Funktionen sind kein primitiver Typ typeof liefert function Fur alle anderen Werte regulare Ausdrucke Arrays und den Wert null inbegriffen liefert typeof den Zeichenketten Wert object zuruck Im Gegensatz zu anderen Programmiersprachen gibt es in JavaScript keine echten assoziativen Arrays 44 Mit den vordefinierten Konstruktorfunktionen String Number und Boolean erzeugte Objekte verhalten sich wie Werte der entsprechenden Datentypen der typeof Operator gibt jedoch object zuruck Solche Objekte werden als Wrapper Objekte bezeichnet Zum Datentyp Symbol existiert keine gleichnamige Konstruktorfunktion Nachfolgend ein Beispiel fur eine Variable und das entsprechende Wrapper Objekt let variable Beispieltext Die Funktion alert gibt das Ergebnis string in einem Fenster aus alert typeof variable variable new String Beispieltext alert typeof variable ergibt object Umgekehrt werden Werte der primitiven Typen Number Boolean und String bei Bedarf automatisch in Objekte der entsprechenden Konstruktorfunktion umgewandelt let variable Beispieltext alert variable length ergibt 12 Kontrollstrukturen Bearbeiten JavaScript kennt die ublichen Kontrollstrukturen Sollen diese mehr als eine Anweisung enthalten so muss ein in geschweifte Klammern eingeschlossener Block eingesetzt werden Anweisungen werden mit einem Semikolon abgeschlossen Dies ist aber in den meisten Fallen optional durch die automatic semicolon insertion wird es meist automatisch erganzt if else Bedingte Anweisung Bearbeiten if bedingung anweisungen else anweisungen Kurzschreibweise fur bedingte Wertzuweisungen variable bedingung wertWennWahr wertWennFalsch switch Kontrollstruktur Bearbeiten switch variable case wert1 anweisungen break case wert2 anweisungen break default anweisungen while Schleife Bearbeiten while bedingung anweisungen do while Schleife Bearbeiten do anweisungen while bedingung for Schleife Bearbeiten for startausdruck bedingung iterationsausdruck anweisungen for in Schleife Bearbeiten Mit dieser Anweisung werden alle eigenen und ererbten Eigenschaften eines Objektes durchlaufen die das interne Attribut Enumerable aufweisen 45 Dieses Attribut wurde in ECMA Script 5 eingefuhrt und ist fur bestimmte eingebaute Eigenschaften wie z B die Funktion toString des Prototyps Object nicht gesetzt es kann allerdings im Regelfall vom Benutzer gesetzt und entfernt werden 46 Bei jedem Schleifendurchgang wird einer angegebenen Variable der Eigenschaftsname zugewiesen for let eigenschaftsname in objekt anweisungen for of Schleife Bearbeiten Diese Kontrollstruktur funktioniert wie eine for in Schleife mit dem Unterschied dass hier der angegebenen Variable nicht der Eigenschaftsname sondern der Eigenschaftswert zugewiesen wird 47 for let wert of objekt anweisungen Variablen Bearbeiten Variablen sollten in JavaScript mit let oder var deklariert werden und sind dann innerhalb des Scopes gultig in dem sie deklariert wurden wobei let den Scope weiter eingrenzt als var 48 Verwendet man Variablen ohne sie vorher explizit zu deklarieren werden diese implizit als Eigenschaften des globalen Objekts im Browser window deklariert dieses Verhalten kann man durch die Anweisung use strict unterbinden Eine Besonderheit von JavaScript ist das Hoisting von Variablen das dafur sorgt dass samtliche in einem Codeabschnitt deklarierten Variablen und Funktionen bei der Abarbeitung automatisch direkt an den Anfang vorgezogen werden nur die Deklaration nicht aber deren Wertzuweisung Geltungsbereich von Variablen Bearbeiten Innerhalb von Funktionen oder als Funktionsparameter deklarierte Variablen haben eine lokale Gultigkeit ausserhalb von Funktionen deklarierte Variablen sind global gultig Global bedeutet bei JavaScript in Browsern dass derart deklarierte Variablen auf der ganzen Webseite und bei allen aktiven JavaScripts gultig sind Da dies zu ungewollten Nebeneffekten mit anderen in der Seite eingebunden Scripts wie Drittanbieter Plugins Web Analytics oder Werbebannern fuhren kann sollten globale Variablen so weit wie moglich vermieden werden let a b explizite Deklaration einer globalen Variable a 1 Definition einer Variable console log a ergibt 1 c 2 implizite Deklaration ohne let es entsteht keine Variable sondern console log c ergibt 2 console log window c dem globalen Objekt Window wurde eine Eigenschaft zugewiesen console log window a Fehler function foo e saubere Deklaration eines Funktionsparameters let f g 5 saubere Deklaration und Definition einer lokalen Variablen console log a globale Variablen sind uberall gultig console log c Eigenschaften des globalen Objektes auch console log e Funktionsparameter haben denselben Gultigkeitsbereich wie lokale Variablen h 7 das implizit deklarierte h ist eine globale Variable foo a console log e Fehler da der Funktionsparameter e nur innerhalb der Funktion gultig ist console log f Fehler da die Variable f nur innerhalb der Funktion gultig ist console log h ergibt 7 s o console log window h ergibt 7 die globale Variable ist eine Eigenschaft von window Konstanten Bearbeiten Konstanten sollen mit const deklariert werden bei der Initialisierung muss ihnen ein Wert zugewiesen werden Fur den Gultigkeitsbereich gelten dieselben Bedingungen wie bei Variablendeklarationen mit let Konstanten konnen nicht durch erneute Zuweisung verandert werden allerdings konnen wenn es sich bei der Konstanten um Objekte handelt einzelne Eigenschaften der Konstanten geandert werden 49 Funktionen Bearbeiten Funktionen sind in JavaScript vollwertige Objekte Sie haben Methoden und Eigenschaften konnen erstellt und uberschrieben als Argumente an Funktionen ubergeben und von ihnen erzeugt und zuruckgegeben werden Im letzteren Fall entsteht eine Closure auch Funktionsabschluss genannt mit der beispielsweise Datenkapselung umgesetzt werden kann let nachricht function let geheim 42 return function return geheim botschaft ist eine von nachricht zuruckgegebene Funktion let botschaft nachricht alert typeof geheim undefined alert botschaft 42 Nicht jedes Argument einer Funktion muss beim Aufruf angegeben werden Fur fehlende Argumente wird der Wert undefined gesetzt seit ECMAScript 2015 konnen Parameter auch mit default Wert definiert werden Ausserdem kann innerhalb der Funktion auch uber das arguments Objekt auf die Argumente zugegriffen werden Erzeugung Bearbeiten Es gibt mehrere Moglichkeiten in JavaScript Funktionen zu erzeugen 50 Funktionsdeklarationen Function Declarations function f x y return x y Funktionsausdrucke Function Expressions let f function x y return x y Sofort ausgefuhrte Funktionsausdrucke Immediately Invoked Function Expressions Anonyme Funktionen konnen auch direkt ausgefuhrt werden ohne sie vorher einer Variable zuzuweisen Das kann zur Kapselung des Gultigkeitsbereichs von Variablen verwendet werden function x y return x y 2 3 Benannte Funktionsausdrucke Named Function Expressions Der Variablen f wird eine Funktion mit Bezeichner g zugewiesen Ausserhalb der Funktion ist sie mit f ansprechbar innerhalb mit f und g let f function g x y return x y Funktionskonstruktor Function Constructors let f new Function x y return x y Pfeilfunktionen Arrow Functions Die runden Klammern sind optional falls die Funktion genau ein Argument hat Werden die geschweiften Klammern weggelassen muss man genau einen Ausdruck ohne return als Ruckgabewert angeben Mit geschweiften Klammern kann man beliebigen Code angeben muss aber fur Ruckgabewerte return verwenden x y gt x y x y gt return x y x gt x 1 x gt return x 1 Eine so erzeugte Funktion kann man naturlich auch einer Variablen zuweisen let f x y gt x y Beispiel Bearbeiten Eine funktionale und rekursive Implementierung des Euklidischen Algorithmus mit zwei Argumenten sieht folgendermassen aus function euklid a b if b 0 return a return euklid b a b Implementierung des Euklidischen Algorithmus mit beliebig vielen Argumenten function ggT numbers if numbers length 0 1 return 0 if numbers length 1 2 return numbers 0 return numbers reduce euklid 3 console log ggT 0 console log ggT 4 4 console log ggT 24 36 84 12 Falls ggT ohne Argument aufgerufen wird dann wird Null zuruckgegeben Falls ggT mit genau einem Argument aufgerufen wird dann wird das Argument selbst zuruckgegeben Dies wird auch als Identitat bezeichnet Reduziert numbers auf einen einzigen Wert indem jeweils zwei Elemente von links nach rechts mit reduce und euklid reduziert werden Implementierung des Euklidischen Algorithmus mit partieller Anwendung function ggT first if first undefined return 0 return function second if second undefined return first return ggT euklid first second console log ggT 0 console log ggT 4 4 console log ggT 24 36 84 12 Objekte Bearbeiten Objekte in JavaScript bestehen aus Eigenschaften die als Name Wert Paar realisiert werden Dabei wird nicht zwischen Attributen und Methoden des Objektes unterschieden eine Eigenschaft deren Wert den Typ Function besitzt fungiert als Methode Jedes Objekt auch durch Literale erzeugte Objekte erbt vom Prototyp des globalen Objekt Konstruktors Vordefinierte Objekte Bearbeiten JavaScript kennt mehrere eingebaute Objekte und Objekttypen die im Standard ECMAScript definiert sind Dabei wird ein Objekttyp durch eine namensgleiche Konstruktorfunktionen reprasentiert die zur Erzeugung von Objekten des entsprechenden Typs verwendet werden kann und zugleich einen Verweis auf den Prototyp des Objekttyps beinhaltet Das namenlose globale Objekt das alle Variablen und Objekte enthalt Der Objekttyp Object von dem alle Objekte abgeleitet sind Der Objekttyp Function von Funktionen Der Objekttyp Array von Arrays Der Objekttyp String von Zeichenketten Der Objekttyp Boolean von boolesche Variablen Der Objekttyp Number von Zahlen 64 Bit Gleitkommazahlen gemass IEEE 754 Der Objekttyp Date fur Datumsformate Daten bzw Zeitpunkte Der Objekttyp RegExp fur regulare Ausdrucke Der Objekttyp Error zur Charakterisierung und ggf nachfolgenden Auslosung mittels throw von Laufzeitfehlern Das Objekt Math stellt Konstanten und Methoden fur mathematische Operationen bereit Das Objekt JSON stellt zwei Methoden fur die Serialisierung von Objekten ins JSON Format und umgekehrt bereit Das Objekt Reflect stellt Methoden fur die Ermittlung und Anderung der Metadaten eines Objekts bereit Weitere Objekte die beim clientseitigen JavaScript verwendet werden entstanden historisch vor allem durch die Netscape Spezifikationen window document usw Das window Objekt selbst ist dabei de facto das globale Objekt indem einfach einer Variablen window das globale Objekt zugewiesen wurde Zahlreiche Unterobjekte von document wurden mittlerweile durch DOM HTML standardisiert title images links forms usw Aktuelle Browser unterstutzen zudem DOM Core und andere W3C DOM Standards sowie Erweiterungen von Microsoft JScript Zugriff auf Objekteigenschaften und methoden Bearbeiten Eigenschaften von Objekten auch Methoden sind Eigenschaften konnen wie folgt angesprochen werden Punkt Notation mit statischen Bezeichnern objekt eigenschaft objekt methode parameter1 parameter2 Klammer Notation mit dynamischen Bezeichnern objekt eigenschaft objekt methode parameter1 parameter2 Eigenschaftsname der in Punktnotation illegal ware objekt methode 1 So konnen auch alle Eigenschaften des Objekts durchlaufen werden for let eigenschaftsName in objekt console log eigenschaftsName objekt eigenschaftsName Zu allen Objekten konnen zur Laufzeit neue Eigenschaften hinzugefugt oder mit delete bestehende entfernt werden Statisch bzw dynamisch benannte Eigenschaften hinzufugen objekt eigenschaftA ein Wert objekt eigenschaftB ein anderer Wert Statisch bzw dynamisch benannte Eigenschaften entfernen delete objekt eigenschaftA delete objekt eigenschaftB Objektliterale Bearbeiten Objekte konnen in JavaScript direkt anhand ihrer Eigenschaften definiert werden let meinObjekt zahl 42 gibZahl function return this zahl alert meinObjekt gibZahl 42 Eine spezielle Notation gibt es fur regulare Ausdrucke mit Konstruktorfunktion new RegExp a test ab true als Literal a test ab true Konstruktor Funktionen Bearbeiten Eine Funktion kann dazu genutzt werden um ein mit new erstelltes Objekt zu initialisieren In diesem Fall spricht man von einem Konstruktor oder einer Konstruktor Funktion Innerhalb dieser Funktion kann das neue Objekt uber die Variable this angesprochen werden function MeinObjekt x Konstruktor this zahl x let objekt new MeinObjekt 3 Instanz erzeugen alert objekt zahl per Meldefenster ausgeben 3 Private Eigenschaften Bearbeiten Private Eigenschaften und Methoden sind nicht explizit Teil der Sprache Mit Hilfe von Closures siehe Funktionen lassen sich dennoch private Eigenschaften von Objekten realisieren let erschaffeKatze function let lebensZahl 7 let maunz function return lebensZahl gt 0 miau orks gibt neues Objekt zuruck return toeten function lebensZahl 1 alert maunz let otto erschaffeKatze otto toeten miau Lediglich die toeten Methode von otto kennt die Variable lebensZahl Der Effekt gleicht dem einer privaten Eigenschaft wenn alle Methoden der Katze in der erzeugenden Funktion erschaffeKatze definiert werden lebensZahl ist dann fur alle Methoden privilegierte Methoden im Beispiel toeten und inneren Funktionen der erzeugenden Funktion private Methoden im Beispiel maunz sichtbar nicht jedoch von aussen oder von nachtraglich an das Objekt gehangten Methoden Vererbung uber Prototypen Bearbeiten Vererbung kann in JavaScript durch Prototypen realisiert werden Dies erfordert dass der prototype Eigenschaft einer Konstruktor Funktion ein als Prototyp dienendes Objekt zugewiesen wird Wenn mit der Konstruktor Funktion nun ein Objekt erzeugt wird wird beim Zugriff auf eine nicht existierende Eigenschaft des neuen Objekts die entsprechende Eigenschaft des Prototyps wenn vorhanden zuruckgegeben Beispiel let fisch augen 2 let Mutantenfisch function this augen 3 Mutantenfisch prototype fisch let blinky new Mutantenfisch eigene Eigenschaft von blinky alert blinky augen 3 blinkys eigene Eigenschaft wird geloscht delete blinky augen blinky hat die Eigenschaft selbst nicht mehr es schimmert die Eigenschaft des Prototyps durch alert blinky augen 2 Um festzustellen ob ein Objekt eine Eigenschaft selbst besitzt oder vom Prototyp geerbt hat hat jedes Objekt automatisch durch Vererbung von Object die hasOwnProperty Methode blinky hasOwnProperty augen false Fixierung von Objektstruktur und inhalten Bearbeiten Die in JavaScript im Regelfall vollig dynamische Struktur eines Objekts obj kann in verschiedener Hinsicht fixiert werden Nach dem Methodenaufruf Object preventExtensions obj konnen keine weiteren Attribute und Methoden mehr erganzt werden Object seal obj verhindert sowohl die Erweiterung wie die Streichung von Attributen und Methoden Der Aufruf Object freeze obj fixiert sowohl die Objektstruktur wie auch die Attributwerte inklusive der Methoden gegen nachfolgende Veranderungen Die betreffenden Status eines Objekts obj konnen mit Object isExtensible obj Object isSealed obj und Object isFrozen obj ermittelt werden Es ist auch moglich nur ein einzelnes Attribut eines Objekts obj zu fixieren Beispielsweise wird mit dem AufrufObject defineProperty obj vorname writable false das Attribut obj vorname schreibgeschutzt 51 Delegationsprinzipien Bearbeiten JavaScript ist eine Delegationssprache mit sowohl selbstausfuhrendem als auch direktem Delegationsmechanismus Funktionsobjekte als Rollen Traits und Mixins JavaScript unterstutzt schon auf der Ebene des Sprachkerns verschiedene auf Funktionsobjekten aufbauende Implementierungen des Rollen Musters 52 wie z B Traits 53 54 und Mixins 55 56 Zusatzliches Verhalten wird bereitgestellt indem mindestens eine Methode uber das Schlusselwort this im Rumpf eines function Objekts gebunden wird Benotigt ein Objekt zusatzliches Verhalten welches ihm nicht uber die Prototypenkette zur Verfugung gestellt werden kann lasst sich eine Rolle direkt uber call bzw apply an dieses Objekt delegieren Objektkomposition und Vererbung durch Delegation Wahrend Komposition in JavaScript uber diese direkte Delegation abgedeckt werden kann kommt automatische Delegation immer dann zur Anwendung wenn der Interpreter die Prototypenkette eines Objekts nach oben hin abwandern muss um z B eine mit diesem Objekt assoziierte Methode zu finden die diesem nicht unmittelbar gehort Sobald die Methode gefunden ist wird sie im Kontext dieses Objekts aufgerufen Demzufolge wird Vererbung in JavaScript uber einen selbstausfuhrenden Delegationsmechanismus abgebildet der an die prototype Eigenschaft von Konstruktorfunktionen gebunden ist Fehlerbehandlung Bearbeiten Ab Version 3 verfugt ECMAScript uber eine von Java ubernommene Fehlerbehandlung Die Anweisung try catch finally fangt Ausnahmen exceptions ab die aufgrund eines Fehlers oder einer throw Anweisung auftreten Die Syntax lautet try Anweisungen in denen Ausnahmen auftreten oder ausgelost werden konnen catch exception Anweisungsfolge die im Ausnahmefall ausgefuhrt wird In diesem Teil kann die Fehlerbehandlung erfolgen finally Anweisungsfolge die anschliessend in jedem Fall ausgefuhrt wird throw sample exception wenn verfugbar besser Error Objekt siehe unten Zu Beginn werden die Anweisungen im try Block ausgefuhrt Falls eine Ausnahme auftritt wird der Kontrollfluss sofort zum catch Block mit dem Ausnahmeobjekt als Parameter umgeleitet Im Normalfall wird der Ausnahmeblock ubersprungen Nach der Ausfuhrung des try Blocks auch teilweise und gegebenenfalls des catch Blocks werden in jedem Fall die Anweisungen im finally Block ausgefuhrt Der finally Teil kann weggelassen werden alternativ der catch Teil Einige Laufzeitumgebungen wie V8 und somit Node js und auch viele Webbrowser stellen gesonderte Error Objekte zur Verfugung die neben der Fehlermeldung auch einen Stacktrace und weitere Zusatzinformationen transportieren konnen 57 58 59 Um diese Vorteile zu nutzen andert man im einfachsten Anwendungsfall den throw Befehl von span class k throw span span class w span span class s2 Meldungstext span span class p span zu span class k throw span span class w span span class ow new span span class w span span class ne Error span span class p span span class s2 Meldungstext span span class p span 60 Klammern um den Parameter des throw Befehls sind im Allgemeinen nicht notwendig 51 Sollten sie in Ausnahmefallen benotigt werden um beispielsweise einen auf mehrere Zeilen verteilten Parameter zusammenzufassen kann die mogliche Verwechslung mit einem Funktionsaufruf dennoch vermieden werden indem man ein Leerzeichen zwischen throw und die offnende Klammer einfugt JavaScript Bibliotheken BearbeitenUm die Erstellung von Webanwendungen mit Hilfe von JavaScript zu erleichtern gibt es diverse Bibliotheken und Frameworks Eine Bibliothek ist eine Sammlung von Funktionen die der Programmierer nutzen kann Ein Framework fordert daruber hinaus durch ein besonderes Mass an Abstraktion eine bestimmte Struktur der Programmierung Ausgelost von neuen Konzepten wie Ajax entstand seit 2004 ein neues Interesse fur JavaScript JavaScript wird zunehmend fur Rich Client Anwendungen benutzt die das Aussehen und die Bedienung von herkommlichen Desktop Programmen auf Web gestutzte Anwendungen ubertragen JavaScript spielt dabei eine Schlusselrolle wenn es darum geht Statusinformationen ohne Laden einer vollstandigen Seite zwischen Browser und HTTP Server zu ubertragen Im Zuge dieser neuen Anforderungen entstanden verschiedene Bibliotheken die die Entwicklung solcher Anwendungen vereinfachen wollen Neben Ajax Funktionalitaten bieten die meisten dieser Bibliotheken eine eigene Basis fur objektorientierte Programmierung eine Abstraktionsschicht fur das komfortable Arbeiten mit dem DOM sowie grafische Effekte wie Animationen Aber auch schon vor dem breiten Einsatz von Ajax existierten Funktionssammlungen zur Unterstutzung der browserubergreifenden Programmierung 61 Zu den bekannten JavaScript Bibliotheken und Frameworks zahlen AngularJS Dojo Toolkit Ext JS jQuery MooTools Prototype Qooxdoo React Vue js und die Yahoo User Interface Library Speziell mit grafischen Effekten beschaftigen sich Moo fx und Script aculo us Fur die serverseitige Programmierung mittels Node js stehen eigene Bibliotheken und Frameworks bereit Einige Bibliotheken und insbesondere Frameworks erweitern die Sprache um zusatzliche Funktionen die haufig in spatere Versionen der Spezifikation einfliessen oder rusten bei Bedarf altere Implementierung per Polyfill nach Siehe auch Kategorie JavaScript BibliothekJavaScript amp Suchmaschinenoptimierung SEO BearbeitenSuchmaschinen gehen unterschiedlich mit der Verarbeitung von Javascript Inhalten um wodurch es in den letzten Jahren immer wieder zu Fallen gekommen ist dass Website teilweise oder ganzlich nicht in Suchmaschinen auffindbar waren Der Suchmaschinenbetreiber Google kann laut eigenen Aussagen JavaScript Inhalte crawlen rendern und indexieren 62 Neben allgemeinen Empfehlungen wie z B die Verwendung von aussagekraftigen Titeln eindeutigen Statuscodes und den sorgsamen Umgang mit Noindex Direktiven gibt es im Hinblick auf JavaScript noch spezifischere Empfehlungen welche helfen konnen dass JavaScript Webanwendungen optimal via Suchmaschinenoptimierung aufgefunden werden konnen Dazu zahlen serverseitiges Pre Rendering oder der Verzicht von Fragmenten bei Links Fur das Debugging von JavaScript amp SEO gibt es eine Reihe von offiziellen Empfehlungen seitens Google um nachprufen zu konnen wie der Googlebot Webinhalte erfasst 63 Siehe auch BearbeitenActionScript Bezeichnung fur eine JavaScript ahnliche Skriptsprache in Flash und Macromedia Director wo es alternativ zu Lingo verwendet werden kann Aktive Inhalte Bookmarklet kleine JavaScript Programme im Browser Dart Programmiersprache TypeScript Weiterentwicklung von MicrosoftLiteratur BearbeitenDavid Flanagan JavaScript Das Handbuch fur die Praxis 7 Auflage O Reilly Heidelberg 2021 ISBN 978 3 96009 157 8 Paul Fuchs JavaScript Programmieren fur Einsteiger Der leichte Weg zum JavaScript Experten BMU Verlag Landshut 2019 ISBN 978 3 96645 016 4 Jorg Bewersdorff Objektorientierte Programmierung mit JavaScript Direktstart fur Einsteiger 2 Auflage Wiesbaden 2018 ISBN 978 3 658 21076 2 doi 10 1007 978 3 658 21077 9 Philip Ackermann JavaScript Das umfassende Handbuch 1 Auflage Galileo Press Bonn 2016 ISBN 978 3 8362 3838 0 Nicholas Zakas JavaScript objektorientiert Verstandlicher flexibler effizienter programmieren Heidelberg 2014 ISBN 978 3 86490 202 4 Peter Kroner ECMAScript 5 Entwickeln mit dem aktuellen JavaScript Standard 1 Auflage Open Source Press Munchen 2013 ISBN 978 3 95539 063 1 Christian Wenz JavaScript und AJAX Das umfassende Handbuch 9 Auflage Galileo Press Bonn 2009 ISBN 978 3 89842 859 0 openbook galileocomputing de Stefan Koch JavaScript Einfuhrung Programmierung Referenz inklusive Ajax 5 Auflage dpunkt Verlag Heidelberg 2009 ISBN 978 3 89864 594 2 Douglas Crockford Das Beste an JavaScript O Reilly Koln 2008 ISBN 978 3 89721 876 5 Weblinks Bearbeiten Commons JavaScript Sammlung von Bildern Videos und Audiodateien Wikibooks Websiteentwicklung JavaScript Lern und Lehrmaterialien Wiktionary JavaScript Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen Linkkatalog zum Thema JavaScript bei curlie org ehemals DMOZ JavaScript Geschichte Struktur Eigenschaften und die Zukunft der wichtigsten Programmiersprache des Webs MP3 97 5 MB In Chaosradio Express CRE146 27 Februar 2010 abgerufen am 27 Februar 2010 Addy Osmani Learning JavaScript Design Patterns Abgerufen am 24 Mai 2013 englisch Entwurfsmuster in JavaScript LizenzSpezifikationen Bearbeiten ISO genormte ECMAScript Spezifikation ISO IEC 16262 2002 englisch franzosisch ECMAScript Spezifikation englisch PDF 3 1 MiB HTML Version Referenz von Mozilla deutsch Ubersicht uber die Neuerungen in JavaScript englisch Dokumentationen Bearbeiten JavaScript Kapitel bei SELFHTML Wiki Objektorientierung in JavaScript Eloquent JavaScript Frei verfugbares E Book englisch Einzelnachweise Bearbeiten ECMAScript 2023 Language Specification In www ecma international org Ecma International Juni 2023 abgerufen am 27 Juli 2023 englisch Stefan Koch JavaScript Einfuhrung Programmierung und Referenz inklusive Ajax 5 Auflage dpunkt verlag Heidelberg 2009 ISBN 978 3 89864 594 2 Uberblick S 5 17 457 S a b Olaf Gollner JavaScript fur Mikrocontroller In heise online Verlag Heinz Heise 13 August 2013 abgerufen am 27 Juli 2016 a b Olaf Gollner Tessel JavaScript Entwicklerboard furs Internet der Dinge In heise online Verlag Heinz Heise 15 August 2013 abgerufen am 27 Juli 2016 Stefan Koch JavaScript Einfuhrung Programmierung und Referenz inklusive Ajax 5 Auflage dpunkt verlag Heidelberg 2009 ISBN 978 3 89864 594 2 JavaScript im Browser S 137 156 457 S Jens Ihlenfeld Node strikt ereignisorientierter Javascript Server In Golem de 24 November 2009 abgerufen am 27 Juli 2016 Steve Champeon JavaScript How Did We Get Here Nicht mehr online verfugbar In Web DevCenter O Reilly 6 April 2001 archiviert vom Original am 19 Juli 2016 abgerufen am 27 Juli 2016 englisch Chris Mills A Short History of JavaScript In Web Education Community Group Wiki W3C 27 Juli 2012 abgerufen am 27 Juli 2016 englisch Auskunft zur Marke JAVASCRIPT im Register des Deutschen Patent und Markenamtes DPMA Ingo Pakalski 15 Jahre WWW Die Browserkriege Der erste Browserkrieg zwingt Netscape in die Knie In Golem de 1 Mai 2008 abgerufen am 27 Juli 2016 Klaus Peter Kerbusk Missbrauch des Monopols In Der Spiegel Nr 44 1997 online Scripting for the Java Platform In Java SE Documentation Oracle abgerufen am 24 Oktober 2012 englisch Florian Scholz Eric Shepherd New in JavaScript 1 3 In Mozilla Developer Network Mozilla Foundation 20 Januar 2016 archiviert vom Original am 28 Juli 2016 abgerufen am 27 Juli 2016 englisch Florian Scholz Eric Shepherd New in JavaScript 1 4 In Mozilla Developer Network Mozilla Foundation 20 Januar 2016 abgerufen am 27 Juli 2016 englisch New Features in this Release Nicht mehr online verfugbar In DevEdge Online Documentation Netscape Communications Corporation 29 Oktober 1998 archiviert vom Original am 2 August 2004 abgerufen am 27 Juli 2016 englisch Florian Scholz Eric Shepherd New in JavaScript 1 5 In Mozilla Developer Network Mozilla Foundation abgerufen am 20 Januar 2016 englisch Wladimir Palant SylvainPasche Nickolay Ponomarev Florian Scholz Eric Shepherd New in JavaScript 1 6 In Mozilla Developer Network Mozilla Foundation 4 April 2016 abgerufen am 27 Juli 2016 englisch Florian Scholz James Herdman Eric Shepherd Robert Sedovsek David Bruant Leo Balter Jonathan Watt Eli Grey Nickolay Ponomarev Martin Honnen Evan Prodromou New in JavaScript 1 7 In Mozilla Developer Network Mozilla Foundation 21 Oktober 2015 abgerufen am 27 Juli 2016 englisch Florian Scholz Eli Grey Leandro Merces Xavier Nickolay Ponomarev New in JavaScript 1 8 In Mozilla Developer Network Mozilla Foundation 20 Januar 2016 abgerufen am 27 Juli 2016 englisch John Resig Versions of JavaScript In johnresig com 22 April 2008 abgerufen am 8 Juni 2020 englisch ECMAScript 2022 Language Specification Juni 2022 abgerufen am 22 Juli 2022 englisch Julia Schmidt Standard fur ECMAScript soll jahrlich Updates erhalten In heise Developer 23 Januar 2015 abgerufen am 22 Oktober 2015 tc39 ecma262 In GitHub Abgerufen am 2 Januar 2017 Changes to JavaScript Part 1 EcmaScript 5 ECMAScript 2015 Language Specification Abgerufen am 2 Januar 2017 englisch ECMAScript 2016 Language Specification 7 Auflage Emca International Genf englisch 586 S ecma international org PDF ECMAScript 2016 Language Specification Memento vom 12 April 2015 im Internet Archive ECMAScript 6 compatibility table In kangax github io Abgerufen am 2 Januar 2017 englisch Nicholas C Zakas Professional JavaScript for Web Developers John Wiley amp Sons 2011 ISBN 978 1 118 02669 4 englisch 960 S ECMAScript 2017 Language Specification Juni 2017 abgerufen am 5 Dezember 2017 englisch JavaScript Standard ECMAScript 2016 offiziell verabschiedet In heise online heise Developer 17 Juni 2016 abgerufen am 3 Januar 2017 a b ECMAScript Next compatibility table In kangax github io Abgerufen am 2 Januar 2017 ECMAScript 2017 Language Specification Ecma International Juni 2017 abgerufen am 4 August 2017 englisch Christian Liebel Evolution im Web ECMAScript 2017 heise Developer 1 August 2017 abgerufen am 4 August 2017 ECMAScript 2017 In Exploring ES2016 and ES2017 22 Marz 2017 abgerufen am 4 August 2017 englisch JavaScript Standard ECMAScript 2018 offiziell verabschiedet heise de am 28 Juni 2018 Tracking ECMAScript Proposals In TC39 Ecma abgerufen am 4 August 2017 englisch ECMAScript 2019 Neun Neuerungen fur den JavaScript Sprachstandard In heise online heise online 4 Februar 2019 abgerufen am 17 April 2020 JavaScript Die Features fur ECMAScript 2020 stehen fest In heise online heise online 6 April 2020 abgerufen am 19 Juni 2020 JavaScript 2021 Schwache Referenzen beliebige Versprechen und neue Zuweisungen In heise online heise online 24 Juli 2020 abgerufen am 27 September 2021 ECMAScript 2022 Language Specification Proposals included in the incoming ECMAScript 2022 standard for JavaScript In geek culture geek culture 2 September 2021 abgerufen am 27 September 2021 W3C Working Draft 24 September 2015 In w3 org Abgerufen am 28 Juli 2016 Ilja Zaglov TypeScript Microsoft s neue JavaScript Erweiterung In t3n Magazin 10 Oktober 2012 abgerufen am 10 Oktober 2012 JavaScript Objekte Array In SELFHTML 15 Juli 2016 abgerufen am 27 Juli 2016 for in MDN Object defineProperty MDN for of MDN JavaScript Variable let im SELFHTML Wiki JavaScript Variable const im SELFHTML Wiki Juriy Kangax Zaytsev Named function expressions demystified In kangax github io 17 Juni 2009 abgerufen am 28 Juli 2016 englisch a b ECMAScript Language Specification ECMA 262 Edition 5 1 In ecma international org Abgerufen am 28 Juli 2016 ecma international org PDF PDF Englische Wikipedia Role oriented programming Traits for Javascript 2010 CocktailJS Annotations Traits Talents April 2013 Angus Croll A fresh look at JavaScript Mixins vom 31 Mai 2011 Die vielen Talente von JavaScript Rollen orientierte Programmieransatze wie Traits und Mixins verallgemeinern zu konnen peterseliger blogspot de 5 Juni 2014 JavaScript Stack Trace API in Google V8 Wiki Stand 28 Juni 2010 abgerufen am 23 Februar 2013 JavaScript Core Reference Error Memento vom 4 November 2014 im Internet Archive in Aptana HTML Reference Stand 2 Juli 2012 abgerufen am 23 Februar 2013 Tom DuPont Report Unhandled Errors from JavaScript 13 April 2013 abgerufen am 16 April 2013 englisch Fehlerprotokollierung mit Stacktrace in JavaScript Nico Reed What is the error object Memento vom 31 Marz 2013 im Internet Archive In Nodejitsu Documentation Stand 26 August 2011 abgerufen am 23 Februar 2013 Stefan Koch JavaScript Einfuhrung Programmierung und Referenz inklusive Ajax 5 Auflage dpunkt verlag Heidelberg 2009 ISBN 978 3 89864 594 2 Ajax S 333 355 457 S Grundlagen von JavaScript SEO Google Search Central Abgerufen am 7 Dezember 2020 Web developer tools for debugging JavaScript issues in Google Search Abgerufen am 7 Dezember 2020 englisch Normdaten Sachbegriff GND 4420180 1 lobid OGND AKS Abgerufen von https de wikipedia org w index php title JavaScript amp oldid 235858886