Laten we eens kijken naar de verschillende scenario’s, waarbij deze eenvoudige wijziging u kan helpen.
Een variabele wordt niet toegevoegd aan het globale/vensterobject als deze niet is gedeclareerd.
Als een niet-aangegeven variabele is gedefinieerd, wordt deze standaard toegevoegd aan het globale/vensterobject. Dit kan een fout veroorzaken en kan zelfs moeilijk te vinden zijn.
Om dergelijke scenario’s te vermijden, kunnen we “use strict” verklaren. Strict mode staat niet toe dat variabelen worden gebruikt die niet zijn gedeclareerd.
Je kunt geen variabelen declareren die in de toekomst als reservewoorden kunnen worden gebruikt.
Zoals we in bovenstaand voorbeeld kunnen zien, konden we aan de linkerkant een variabele declareren en deze let noemen, wat een ES6 gereserveerd sleutelwoord is. Technisch gezien zou dit een exceptie moeten opleveren, maar de compiler negeert dit.
Ook kunnen we aan de rechterkant zien dat we een syntaxisfout hebben gekregen door over te schakelen op een strikte bewerkingscontext. We moeten kiezen voor een strikte modus, om te voorkomen dat we een gereserveerd sleutelwoord gebruiken voor variabelenamen.
Het voorkomt dat men functies, variabelen en functieargumenten verwijdert:
De delete operator op zich wordt gebruikt om een eigenschap op een object te verwijderen.
De operator verwijderen kan niet worden gebruikt om een functie te verwijderen, variabele of argumenten.
In de strikte modus wordt er een Type Error-uitzondering weergegeven. Dit gebeurt omdat we proberen een eigenschap te verwijderen, maar niet de waarde zelf.
Het gebruik van eval wordt beperkt:
In JS wordt de eval-functie gebruikt om JavaScript-expressies in een tekenreeksformaat uit te voeren.
Laten we eens proberen om dezelfde code in strikte modus te implementeren: