JavaScript Gebruik Strikt
"use strict";
Definieert dat JavaScript-code moet worden uitgevoerd in "strikte modus".
De "gebruik strikte" richtlijn
De "use strict"
richtlijn was nieuw in ECMAScript versie 5.
Het is geen statement, maar een letterlijke uitdrukking, genegeerd door eerdere versies van JavaScript.
Het doel van "use strict"
is om aan te geven dat de code in "strikte modus" moet worden uitgevoerd.
In de strikte modus kunt u bijvoorbeeld geen niet-gedeclareerde variabelen gebruiken.
Alle moderne browsers ondersteunen "gebruik strikt" behalve Internet Explorer 9 en lager:
Directive | |||||
---|---|---|---|---|---|
"use strict" | 13.0 | 10.0 | 4.0 | 6.0 | 12.1 |
De nummers in de tabel geven de eerste browserversie aan die de richtlijn volledig ondersteunt.
U kunt de strikte modus in al uw programma's gebruiken. Het helpt je om schonere code te schrijven, zoals het voorkomen dat je niet-gedeclareerde variabelen gebruikt.
"use strict"
is slechts een string, dus IE 9 zal geen foutmelding geven, zelfs als het deze niet begrijpt.
Strikte modus verklaren
De strikte modus wordt aangegeven door "gebruik strikt" toe te voegen; naar het begin van een script of een functie.
Gedeclareerd aan het begin van een script, heeft het een globaal bereik (alle code in het script wordt uitgevoerd in de strikte modus):
Voorbeeld
"use strict";
x = 3.14; // This will cause an error
because x is not declared
Voorbeeld
"use strict";
myFunction();
function myFunction() {
y = 3.14; // This will also cause an error
because y is not declared
}
Gedeclareerd in een functie, heeft het een lokaal bereik (alleen de code binnen de functie bevindt zich in de strikte modus):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
Het "gebruik strikt"; Syntaxis
De syntaxis, voor het aangeven van de strikte modus, is ontworpen om compatibel te zijn met oudere versies van JavaScript.
Het compileren van een numerieke letterlijke (4 + 5;) of een letterlijke tekenreeks ("John Doe";) in een JavaScript-programma heeft geen bijwerkingen. Het compileert eenvoudig naar een niet-bestaande variabele en sterft.
Dus "use strict";
alleen van belang voor nieuwe compilers die de betekenis ervan "begrijpen".
Waarom strikte modus?
De strikte modus maakt het gemakkelijker om "veilig" JavaScript te schrijven.
Strikte modus verandert eerder geaccepteerde "slechte syntaxis" in echte fouten.
In normaal JavaScript creëert het verkeerd typen van een variabelenaam bijvoorbeeld een nieuwe globale variabele. In de strikte modus geeft dit een fout, waardoor het onmogelijk wordt om per ongeluk een globale variabele te maken.
In normaal JavaScript ontvangt een ontwikkelaar geen feedback over fouten bij het toewijzen van waarden aan niet-schrijfbare eigenschappen.
In de strikte modus zal elke toewijzing aan een niet-beschrijfbare eigenschap, een eigenschap die alleen getter is, een niet-bestaande eigenschap, een niet-bestaande variabele of een niet-bestaand object een fout opleveren.
Niet toegestaan in strikte modus
Het is niet toegestaan een variabele te gebruiken, zonder deze te declareren:
"use strict";
x = 3.14; // This will cause an error
Objecten zijn ook variabelen.
Het is niet toegestaan een object te gebruiken, zonder het te declareren:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
Het verwijderen van een variabele (of object) is niet toegestaan.
"use strict";
let x = 3.14;
delete x; // This
will cause an error
Het verwijderen van een functie is niet toegestaan.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Het dupliceren van een parameternaam is niet toegestaan:
"use strict";
function x(p1, p1) {}; // This will cause an error
Octale numerieke letterlijke waarden zijn niet toegestaan:
"use strict";
let x = 010; // This
will cause an error
Octale escape-tekens zijn niet toegestaan:
"use strict";
let x = "\010"; // This will cause an error
Schrijven naar een alleen-lezen eigenschap is niet toegestaan:
"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
Schrijven naar een alleen-get-property is niet toegestaan:
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
Het verwijderen van een niet-verwijderbare eigenschap is niet toegestaan:
"use strict";
delete Object.prototype; // This will cause an error
Het woord eval
kan niet als variabele worden gebruikt:
"use strict";
let eval = 3.14; // This will cause an error
Het woord arguments
kan niet als variabele worden gebruikt:
"use strict";
let arguments = 3.14; // This will cause an error
De with
verklaring is niet toegestaan:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
Het is om veiligheidsredenen eval()
niet toegestaan om variabelen te creëren in het bereik van waaruit het werd aangeroepen:
"use strict";
eval ("let x = 2");
alert (x); // This
will cause an error
Het this
sleutelwoord in functies gedraagt zich anders in de strikte modus.
Het this
sleutelwoord verwijst naar het object dat de functie heeft aangeroepen.
Als het object niet is opgegeven, keren functies in de strikte modus terug undefined
en functies in de normale modus retourneren het globale object (venster):
"use strict";
function myFunction() {
alert(this); // will alert "undefined"
}
myFunction();
Toekomstbestendig!
Sleutelwoorden die zijn gereserveerd voor toekomstige JavaScript-versies kunnen NIET worden gebruikt als variabelenamen in de strikte modus.
Dit zijn:
- implementeert
- koppel
- laat
- pakket
- privaat
- beschermd
- openbaar
- statisch
- opbrengst
"use strict";
let public = 1500; // This will cause an error
Kijk uit!
De instructie "use strict" wordt alleen herkend aan het begin van een script of een functie.