JavaScript
| JavaScript | ||||
|---|---|---|---|---|
| Paradigma | multi-paradigma, functioneel, objectgeoriënteerd (prototype-gebaseerd) | |||
| Verschenen | 4 december 1995[1] | |||
| Ontwerper | Brendan Eich | |||
| Ontwikkelaar | Netscape Communications Corporation, Mozilla Foundation | |||
| Huidige versie | ECMAScript 2024[2] juni 2024 | |||
| Typesysteem | dynamisch, zwak, duck-typing | |||
| Implementaties | SpiderMonkey, Rhino | |||
| Dialecten | ECMAScript, JScript | |||
| Beïnvloed door | Self, C, Scheme | |||
| Invloed op | ActionScript, JScript, JScript .NET | |||
| Bestandsextensies | js, mjs | |||
| Website | Mozilla | |||
| ||||

JavaScript is een veelgebruikte scripttaal om webpagina's interactief te maken en webapplicaties te ontwikkelen. Naast HTML en CSS is JavaScript een van de kerntechnologieën van het wereldwijde web.
Geschiedenis
[bewerken | brontekst bewerken]De eerste versie van JavaScript werd in 1995 ontwikkeld door Brendan Eich van Netscape Communications Corporation voor gebruik in Netscape Navigator. Aanvankelijk was de naam Mocha en vervolgens LiveScript. De taal werd hernoemd tot JavaScript in de tijd dat in de Netscape-browser ook ondersteuning voor Java-applets werd ingebouwd.
Met de introductie van JavaScript ontstonden de eerste mogelijkheden om webpagina's interactief te maken. Dit werd later Dynamic HTML genoemd.
Netscape heeft in een poging om JavaScript als een officiële norm erkend te krijgen en er toch zelf voldoende zeggingskracht over te behouden, de taal laten normeren door de European Computer Manufacturers Association (ECMA), waarbij de naam om redenen betreffende het merkrecht is gewijzigd in ECMAScript. De relevante ISO-standaard is ISO 16262. De huidige versie van JavaScript is versie ECMAScript 2018 (juni 2018).
Microsoft heeft een eigen implementatie van JavaScript ontwikkeld onder de naam JScript en Adobe heeft een eigen versie genaamd ActionScript, die gebruikt wordt in Flash.
Kenmerken
[bewerken | brontekst bewerken]De meest opvallende kenmerken van JavaScript zijn:
- Prototype-gebaseerde overerving
- Dit in tegenstelling tot de meeste gangbare objectgeoriënteerde programmeertalen, die klasse-gebaseerde overerving gebruiken.
- Functioneel programmeren
- JavaScript is sterk beïnvloed door functionele programmeertalen zoals Self en Scheme. Zo zijn functies in JavaScript first-class, wat wil zeggen dat functies gewone objecten zijn. Verder ondersteunt JavaScript geneste functies en closures.
- Reguliere expressies
- JavaScript heeft een ingebouwde ondersteuning met speciale syntaxis voor reguliere expressies. Deze is vergelijkbaar en tot op zekere hoogte compatibel met die van Perl.
- Objecten zijn arrays
- Objecten in JavaScript zijn te benaderen als associatieve arrays.
JavaScript versus Java
[bewerken | brontekst bewerken]JavaScript wordt nogal eens verward met de programmeertaal Java, omdat het er qua naam en qua syntaxis sterk op lijkt. Die gelijkenis is oppervlakkig; in wezen zijn het heel verschillende talen.
Toen JavaScript werd ontwikkeld was Netscape de webbrowser die door bijna iedereen werd gebruikt. Het was nog niet mogelijk om in een webpagina code op te nemen die door de browser wordt uitgevoerd. Dat zogenoemde client-side scripting biedt enorm veel extra mogelijkheden, dus er was veel behoefte aan. Wel ondersteunde Netscape het sinds kort om in een webpagina kleine programmaatjes, zogeheten applets, in te bedden, geschreven in Java. Dat heeft echter allerlei beperkingen die een scripttaal die direct door de browser wordt geïnterpreteerd niet heeft. Netscape besloot dus zo'n scripttaal te maken en in Netscape te ondersteunen. De expliciete opdracht was om de syntaxis op Java te laten lijken; de naam JavaScript suggereert zelfs dat er sprake is van een versie van Java, maar dan als scripttaal uitgevoerd in de browser. Dat is misleidend, want JavaScript lijkt inhoudelijk niet op Java, maar op functionele programmeertalen zoals Scheme en Self: het ondersteunt bijvoorbeeld prototype-gebaseerde overerving en niet, zoals Java en de meeste objectgeoriënteerde talen, klasse-gebaseerde overerving, en het ondersteunde van meet af aan hogere-orde-functies en closures.
Gebruik van JavaScript
[bewerken | brontekst bewerken]JavaScript wordt vooral gebruikt in toepassingen op het wereldwijde web.