Er is lange tijd JavaScript ontwikkeld zonder compatibiliteitsproblemen. Nieuwe functies werden aan de taal toegevoegd terwijl oude functionaliteit niet veranderde.
Dat had het voordeel dat bestaande code nooit werd gebroken. Maar het nadeel was dat elke fout of onvolmaakte beslissing van de makers van JavaScript voor altijd in de taal bleef hangen.
Dit was het geval tot 2009, toen ECMAScript 5 (ES5) verscheen. Het voegde nieuwe functies toe aan de taal en wijzigde enkele van de bestaande. Om de oude code te laten werken, staan de meeste van die wijzigingen standaard uit. Je moet ze expliciet inschakelen met een speciale richtlijn: "use strict"
.
“use strict”
De directive ziet eruit als een string: "use strict"
of 'use strict'
. Als het bovenaan een script staat, werkt het hele script op de “moderne” manier.
Voorbeeld:
"use strict";// this code works the modern way...
Nauwelijks gaan we functies leren (een manier om commando’s te groeperen), dus laten we alvast opmerken dat "use strict"
aan het begin van een functie kan worden gezet. Door dat te doen wordt de strikte modus alleen in die functie ingeschakeld. Maar meestal gebruiken mensen het voor het hele script.
Zorg ervoor dat "use strict"
bovenaan je scripts staat, anders kan het zijn dat strict mode niet wordt ingeschakeld.
Strikte modus is hier niet ingeschakeld:
alert("some code");// "use strict" below is ignored--it must be at the top"use strict";// strict mode is not activated
Alleen commentaar mag boven "use strict"
verschijnen.
use strict
"no use strict"
die de engine terugzet naar het oude gedrag.
Eenmaal in strict mode, is er geen weg meer terug.
Browser console
Wanneer u een ontwikkelaarsconsole gebruikt om code uit te voeren, let er dan op dat deze niet standaard use strict
.
Soms, als use strict
een verschil maakt, krijgt u onjuiste resultaten.
Dus, hoe kunt u use strict
in de console daadwerkelijk uitvoeren?
Eerst kun je proberen om Shift+Enter in te drukken om meerdere regels in te voeren, en use strict
bovenaan te zetten, zoals dit:
'use strict'; <Shift+Enter for a newline>// ...your code<Enter to run>
Het werkt in de meeste browsers, namelijk Firefox en Chrome.
Als dat niet zo is, bijvoorbeeld in een oude browser, is er een lelijke, maar betrouwbare manier om ervoor te zorgen dat use strict
. Zet het in dit soort wrapper:
(function() { 'use strict'; // ...your code here...})()
Moeten we “strict” gebruiken?
De vraag klinkt misschien voor de hand liggend, maar dat is het niet.
U zou kunnen aanraden scripts te beginnen met "use strict"
… Maar weet je wat cool is?
Het moderne JavaScript ondersteunt “klassen” en “modules” – geavanceerde taalstructuren (we komen er nog op terug), die use strict
automatisch mogelijk maken. Dus we hoeven de "use strict"
directive niet toe te voegen, als we ze gebruiken.
Dus, voor nu is "use strict";
een welkome gast bovenaan je scripts. Later, als je code allemaal in klassen en modules staat, kun je het weglaten.
Voorlopig moeten we het hebben van use strict
in het algemeen.
In de volgende hoofdstukken, als we de taalfuncties leren, zullen we de verschillen zien tussen de strikte en oude modi. Gelukkig zijn het er niet veel en maken ze ons leven beter.
Alle voorbeelden in deze tutorial gaan uit van de strict mode tenzij (zeer zelden) anders aangegeven.