JS-zelfstudie

JS HOME JS Introductie JS Waarheen? JS-uitgang JS-verklaringen JS-syntaxis JS-opmerkingen JS-variabelen JS Let JS Const JS-operators JS Rekenen JS-opdracht JS-gegevenstypen JS-functies JS-objecten JS-evenementen JS-snaren JS String-methoden JS String zoeken JS String-sjablonen JS-nummers JS-nummermethoden JS-arrays JS-array-methoden JS-array sorteren JS-array-iteratie JS Array Const JS-datums JS-datumnotaties JS Datum Ophaalmethoden Methoden voor het instellen van JS-datum JS Math JS Willekeurig JS Booleans JS-vergelijkingen JS-voorwaarden JS-schakelaar JS Loop For JS-lus voor binnen JS Loop For Of JS-lus terwijl JS Break JS-iteraties JS-sets JS-kaarten JS Typeof JS Type conversie JS Bitwise JS RegExp JS-fouten JS-bereik JS Hijsen JS strikte modus JS dit trefwoord JS-pijlfunctie JS-lessen JS JSON JS-foutopsporing JS-stijlgids JS-best practices JS-fouten JS-prestaties JS Gereserveerde Woorden

JS-versies

JS-versies JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS-geschiedenis

JS-objecten

Objectdefinities Objecteigenschappen Objectmethoden Objectweergave Objectaccessoires Objectconstructeurs Objectprototypes Object-Iterables Objectsets Objectkaarten Objectreferentie

JS-functies

Functiedefinities Functieparameters: Functie-aanroep Functie-oproep: Functie Toepassen Functie Sluitingen

JS-lessen

Klas Intro Klasse Overerving Klasse Statisch

JS Asynchrone

JS-callbacks JS asynchroon JS belooft JS Async/Wachten

JS HTML DOM

DOM Intro DOM-methoden DOM-document DOM-elementen DOM HTML DOM-formulieren DOM-CSS DOM-animaties DOM-evenementen DOM-gebeurtenisluisteraar DOM-navigatie DOM-knooppunten DOM-collecties DOM-knooppuntlijsten

JS-browserstuklijst

JS-venster JS-scherm JS-locatie JS-geschiedenis JS-navigator JS pop-upwaarschuwing JS-timing JS-koekjes

JS Web API's

Introductie web-API Web Forms API Webgeschiedenis-API Webopslag-API Web Worker-API Web Fetch-API Webgeolocatie-API

JS AJAX

Ajax-intro AJAX XMLHttp Ajax-verzoek Ajax-reactie AJAX XML-bestand AJAX PHP Ajax ASP AJAX-database AJAX-toepassingen Ajax-voorbeelden

JS JSON

JSON-intro JSON-syntaxis JSON versus XML JSON-gegevenstypen JSON ontleden JSON Stringify JSON-objecten JSON-arrays JSON-server JSON PHP JSON HTML JSON JSONP

JS versus jQuery

jQuery-kiezers jQuery HTML jQuery CSS jQuery DOM

JS-graphics

JS-graphics JS Canvas JS Plotly JS Chart.js JS Google-kaart JS D3.js

JS-voorbeelden

JS-voorbeelden JS HTML DOM JS HTML-invoer JS HTML-objecten JS HTML-evenementen JS-browser JS-editor JS-oefeningen JS-quiz JS-certificaat

JS-referenties

JavaScript-objecten HTML DOM-objecten


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 evalkan niet als variabele worden gebruikt:

"use strict";
let eval = 3.14;         // This will cause an error

Het woord argumentskan niet als variabele worden gebruikt:

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

De withverklaring 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 thissleutelwoord in functies gedraagt ​​zich anders in de strikte modus.

Het thissleutelwoord verwijst naar het object dat de functie heeft aangeroepen.

Als het object niet is opgegeven, keren functies in de strikte modus terug undefineden 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.