JavaScript strikte modus
- Previous page JS Hoisting
- Next page JS this keyword
"use strict";
Definieert dat JavaScript-code moet worden uitgevoerd in de "strikte modus".
"use strict"-instructie
"use strict"
Is een nieuwe instructie in JavaScript 1.8.5 (ECMAScript versie 5).
Dit is geen statement, maar een tekstexpressie die in eerdere versies van JavaScript wordt genegeerd.
"use strict";
De bedoeling van dit is om aan te geven dat JavaScript-code moet worden uitgevoerd in de "strikte modus".
In strikte modus kunt u bijvoorbeeld geen ongedeclareerde variabelen gebruiken.
De volgende versies van browsers ondersteunen de strikte modus:
- Versie 10 en latere IE
- Versie 4 en latere Firefox
- Versie 13 en latere Chrome
- Versie 5.1 en latere Safari
- Versie 12 en latere Opera
Het declareren van de strikte modus
Door "use strict" aan het begin van een script of functie toe te voegen "use strict";
Om de strikte modus te declareren.
Het declareren van de strikte modus aan het begin van het script heeft een globale scope (alle code in het script wordt uitgevoerd in strikte modus):
Voorbeeld
"use strict"; x = 3.14; // Dit zal een fout veroorzaken, omdat x nog niet is gedeclareerd
Voorbeeld
"use strict"; myFunction(); function myFunction() { y = 3.14; // Dit zal een fout veroorzaken, omdat y nog niet is gedeclareerd }
Het declareren van de strikte modus binnen een functie heeft een lokale scope (alle code binnen de functie wordt uitgevoerd in strikte modus):
x = 3.14; // Dit zal geen fout veroorzaken myFunction(); function myFunction() { "use strict"; y = 3.14; // Dit zal een fout veroorzaken }
"use strict"-syntaxis
De syntaxis van de strikte modus is ontworpen om compatibel te zijn met eerdere versies van JavaScript.
Het compileren van numerieke teksten in JavaScript-programma's (bijvoorbeeld 4+5) of stringteksten ("Bill Gates") heeft geen negatieve gevolgen. Het wordt alleen gecompileerd tot een niet-bestaande variabele en verdwijnt vervolgens.
Alles "use strict";
Het heeft alleen invloed op compilers die de betekenis van "verstaan" begrijpen.
Waarom strikt modus gebruiken?
Strikt modus maakt het schrijven van "veilige" JavaScript gemakkelijker.
Strikt modus maakt het eerdere "foute syntaxis" om te zetten in een daadwerkelijke fout.
Bijvoorbeeld, in normaal JavaScript zal het verkeerd intypen van een variabelenaam een nieuwe globale variabele creëren. In strikt modus zal dit een fout oproepen, zodat het onverwacht creëren van globale variabelen onmogelijk wordt.
In normaal JavaScript zal een ontwikkelaar geen foutmelding krijgen als hij een onleesbare eigenschap toewijst.
In strikt modus zal het toewijzen van waarden aan onleesbare, alleen leesbare, niet-bestaande eigenschappen, of het toewijzen van waarden aan niet-bestaande variabelen of objecten, een fout oproepen.
Zaken die niet zijn toegestaan in strikt modus
Het gebruiken van variabelen zonder dat deze zijn verklaard is niet toegestaan:
"use strict"; x = 3.14; // Dit zal een fout veroorzaken
Objecten zijn ook variabelen
Het gebruiken van objecten zonder dat deze zijn verklaard is ook niet toegestaan:
"use strict"; x = {p1:10, p2:20}; // Dit zal een fout veroorzaken
Het verwijderen van variabelen (of objecten) is niet toegestaan:
"use strict"; var x = 3.14; delete x; // Dit zal een fout veroorzaken
Het verwijderen van functies is niet toegestaan:
"use strict"; function x(p1, p2) {}; delete x; // Dit zal een fout veroorzaken
Herhalde parameternamen zijn niet toegestaan:
"use strict"; function x(p1, p1) {}; // Dit zal een fout veroorzaken
Octale getaltekst is niet toegestaan:
"use strict"; var x = 010; // Dit zal een fout veroorzaken
Geïnterpreteerde schrikteken zijn niet toegestaan:
"use strict"; var x = \010; // Dit zal een fout veroorzaken
Het schrijven naar alleen leesbare eigenschappen is niet toegestaan:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // Dit zal een fout veroorzaken
Het schrijven naar eigenschappen die alleen kunnen worden gelezen is niet toegestaan:
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // Dit zal een fout veroorzaken
Het verwijderen van niet-verwijderbare eigenschappen is niet toegestaan:
"use strict"; delete Object.prototype; // Dit zal een fout veroorzaken
De string "eval" kan niet als variabele worden gebruikt:
"use strict"; var eval = 3.14; // Dit zal een fout veroorzaken
De string "arguments" kan niet als variabele worden gebruikt:
"use strict"; var arguments = 3.14; // This will cause an error
with
The following statement is not allowed:
"use strict"; with (Math){x = cos(2)}; // This will cause an error
For security reasons, it is not allowed eval()
Create variables in the scope in which they are called:
"use strict"; eval ("var x = 2"); alert (x); // This will cause an error
In function calls similar to f(), the value of this is the global object. In strict mode, it has now become undefined
.
Future protection
Keywords reserved for future use are not allowed in strict mode. They are:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // This will cause an error
Warning
"use strict"
Instructions can only be used in scripts or functions ofStartRecognized.
- Previous page JS Hoisting
- Next page JS this keyword