JavaScript strikte modus

"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

Try it yourself

Voorbeeld

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // Dit zal een fout veroorzaken, omdat y nog niet is gedeclareerd
}

Try it yourself

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
}

Try it yourself

"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

Try it yourself

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

Try it yourself

Het verwijderen van variabelen (of objecten) is niet toegestaan:

"use strict";
var x = 3.14;
delete x;                // Dit zal een fout veroorzaken

Try it yourself

Het verwijderen van functies is niet toegestaan:

"use strict";
function x(p1, p2) {}; 
delete x;                 // Dit zal een fout veroorzaken

Try it yourself

Herhalde parameternamen zijn niet toegestaan:

"use strict";
function x(p1, p1) {};   // Dit zal een fout veroorzaken

Try it yourself

Octale getaltekst is niet toegestaan:

"use strict";
var x = 010;             // Dit zal een fout veroorzaken

Try it yourself

Geïnterpreteerde schrikteken zijn niet toegestaan:

"use strict";
var x = \010;            // Dit zal een fout veroorzaken

Try it yourself

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

Try it yourself

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

Try it yourself

Het verwijderen van niet-verwijderbare eigenschappen is niet toegestaan:

"use strict";
delete Object.prototype; // Dit zal een fout veroorzaken

Try it yourself

De string "eval" kan niet als variabele worden gebruikt:

"use strict";
var eval = 3.14;         // Dit zal een fout veroorzaken

Try it yourself

De string "arguments" kan niet als variabele worden gebruikt:

"use strict";
var arguments = 3.14;    // This will cause an error

Try it yourself

with The following statement is not allowed:

"use strict";
with (Math){x = cos(2)}; // This will cause an error

Try it yourself

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

Try it yourself

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

Try it yourself

Warning

"use strict" Instructions can only be used in scripts or functions ofStartRecognized.