Over strict mode in JavaScript

JavaScript is van oorsprong een 'anarchistische' programmeertaal, waarin bijna alles wat een naam heeft een variabele is die je een waarde kunt geven of mee kunt rekenen. Je kunt zelfs functions deleten of waarden toekennen aan eigenschappen die read-only zijn. Dit wordt ook wel 'sloppy' (= slordig, of slonzig) genoemd. Het is de benadering van normaal JavaScript.

Voor eenvoudige toepassingen is dat prima, maar JavaScript-applicaties worden, net als alle software, steeds ingewikkelder. Het bouwen van ingewikkelde applicaties met een sloppy programmeertaal vraagt zorgvuldig werken. Één typefout in een variabele kan al onvoorspelbaar gedrag van de hele applicatie veroorzaken. Dit soort fouten is moeilijk te vinden, ook gereedschappen als DevTools, die in alle moderne browsers aanwezig zijn.
Zeker voor wat grotere toepassingen zou een meer gestructureerde benadering helpend kunnen zijn.

Om meer gestructureerd te kunnen programmeren in JavaScript is in de loop der tijd een aantal aanpassingen gerealiseerd:

strict mode wordt ingeschakeld met het directief "use strict". Dit kan gelden voor het hele script-bestand of alleen binnen een code-blok. Het directief moet wel het eerste statement binnen het bestand of blok zijn.
Oude JavaScript-versies, die strict mode nog niet ondersteunen, zien het directief als een geldige string zonder toekenning of methode. Ze negeren dat.

In strict mode gedraagt JavaScript zich op essentiële punten anders dan bij normaal JavaScript. De volgende opsomming is ontleend aan w3schools.com en van commentaar voorzien gebaseerd op andere bronnen, zoals Stack Overflow.

Keywords die zijn gereserveerd voor gebruik in strict mode in toekomstige JavaScript-versies, mogen niet worden gebruikt als naam van een variabele. Het gaat hier om:
 
implements, interface, package, private, protected, public, static en yield.
 
Deze lijst is niet uitputtend, maar is slechts een indicatie. Diverse bronnen geven tegenstrijdige informatie.

Wat moet je hier mee?
Je kunt je afvragen of je nu helemaal in strict mode moet gaan programmeren of niet. Probeer in elk geval niet om bestaande code om te zetten van gewoon JavaScript naar strict mode. Dat is, door afwijkende manier waarop strict mode omgaat met o.a. geldigheid van variabelen, vragen om problemen. Beide systemen door elkaar gebruiken is mogelijk, maar kan verwarrend zijn. Het debuggen van dergelijke scripts is niet alleen lastig, het is gewoon moeilijk.

De beste aanpak is volgens mij: Blijf programmeren zoals je dat gewend bent. Declareer alle variabelen en objecten vóór je ze gebruikt en wees nauwkeurig. Als je een beginner bent, doe dan alles met strict mode, maar dan ook echt álles.
Vermijd het gebruik van eval(), meestal kun je daar door anders te coderen wel omheen.

 
terug

html-808; Laatste wijziging: 6 augustus 2025