JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JavaScript Gebruik Streng


"use strict"; Definieer dat JavaScript-kode in "streng modus" uitgevoer moet word.


Die "gebruik streng" richtlijn

Die "use strict"opdrag was nuut in ECMAScript weergawe 5.

Dit is nie 'n stelling nie, maar 'n letterlike uitdrukking, geïgnoreer deur vroeëre weergawes van JavaScript.

Die doel van "use strict"is om aan te dui dat die kode in "streng mode" uitgevoer moet word.

Met 'n streng modus kan jy byvoorbeeld nie onverklaarde veranderlikes gebruik nie.

Alle moderne blaaiers ondersteun "gebruik streng" behalwe Internet Explorer 9 en laer:

Directive
"use strict" 13.0 10.0 4.0 6.0 12.1

Die nommers in die tabel spesifiseer die eerste blaaierweergawe wat die opdrag ten volle ondersteun.

Jy kan streng modus in al jou programme gebruik. Dit help jou om skoner kode te skryf, soos om te verhoed dat jy onverklaarde veranderlikes gebruik.

"use strict"is net 'n string, so IE 9 sal nie 'n fout gooi nie, selfs al verstaan ​​dit dit nie.


Verklaar streng modus

Streng modus word verklaar deur "gebruik streng" by te voeg; na die begin van 'n skrif of 'n funksie.

Dit word aan die begin van 'n skrif verklaar en het 'n globale omvang (alle kode in die skrif sal in streng modus uitgevoer word):

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
}

Dit word binne 'n funksie verklaar en het plaaslike omvang (slegs die kode binne die funksie is in streng modus):

x = 3.14;       // This will not cause an error.
myFunction();

function myFunction() {
  "use strict";
  y = 3.14;   // This will cause an error
}


Die "gebruik streng"; Sintaksis

Die sintaksis, om streng modus te verklaar, is ontwerp om versoenbaar te wees met ouer weergawes van JavaScript.

Die samestelling van 'n numeriese letterlike (4 + 5;) of 'n string letterlike ("John Doe";) in 'n JavaScript-program het geen newe-effekte nie. Dit word eenvoudig saamgestel na 'n nie-bestaande veranderlike en sterf.

Dit maak dus "use strict";net saak vir nuwe samestellers wat die betekenis daarvan "verstaan".


Waarom streng modus?

Streng modus maak dit makliker om "veilige" JavaScript te skryf.

Streng modus verander voorheen aanvaar "slegte sintaksis" in werklike foute.

As 'n voorbeeld, in normale JavaScript, skep die verkeerde tik van 'n veranderlike naam 'n nuwe globale veranderlike. In streng modus sal dit 'n fout skep, wat dit onmoontlik maak om per ongeluk 'n globale veranderlike te skep.

In normale JavaScript sal 'n ontwikkelaar geen foutterugvoer ontvang wat waardes aan nie-skryfbare eienskappe toeken nie.

In streng modus sal enige toewysing aan 'n nie-skryfbare eienskap, 'n getter-enigste eiendom, 'n nie-bestaande eienskap, 'n nie-bestaande veranderlike of 'n nie-bestaande voorwerp 'n fout skep.


Nie toegelaat in streng modus nie

Die gebruik van 'n veranderlike, sonder om dit te verklaar, word nie toegelaat nie:

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

Voorwerpe is ook veranderlikes.

Die gebruik van 'n voorwerp, sonder om dit te verklaar, word nie toegelaat nie:

"use strict";
x = {p1:10, p2:20};      // This will cause an error

Die verwydering van 'n veranderlike (of voorwerp) word nie toegelaat nie.

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

Die uitvee van 'n funksie word nie toegelaat nie.

"use strict";
function x(p1, p2) {};
delete x;                // This will cause an error 

Duplisering van 'n parameternaam word nie toegelaat nie:

"use strict";
function x(p1, p1) {};   // This will cause an error

Oktale numeriese letters word nie toegelaat nie:

"use strict";
let x = 010;             // This will cause an error

Oktale ontsnap-karakters word nie toegelaat nie:

"use strict";
let x = "\010";            // This will cause an error

Skryf na 'n leesalleen eiendom word nie toegelaat nie:

"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});

obj.x = 3.14;            // This will cause an error

Dit word nie toegelaat om na 'n eiendom wat slegs te kry nie, te skryf:

"use strict";
const obj = {get x() {return 0} };

obj.x = 3.14;            // This will cause an error

Die uitvee van 'n onuitveebare eiendom word nie toegelaat nie:

"use strict";
delete Object.prototype; // This will cause an error

Die woord evalkan nie as 'n veranderlike gebruik word nie:

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

Die woord argumentskan nie as 'n veranderlike gebruik word nie:

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

Die withstelling word nie toegelaat nie:

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

Om sekuriteitsredes, eval()word nie toegelaat om veranderlikes te skep in die omvang waaruit dit genoem is nie:

"use strict";
eval ("let x = 2");
alert (x);             // This will cause an error

Die thissleutelwoord in funksies tree anders op in streng modus.

Die thissleutelwoord verwys na die voorwerp wat die funksie genoem het.

As die voorwerp nie gespesifiseer is nie, sal funksies in streng modus terugkeer undefineden funksies in normale modus sal die globale voorwerp (venster):

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();


Toekomstige bewys!

Sleutelwoorde wat vir toekomstige JavaScript-weergawes gereserveer is, kan NIE as veranderlike name in streng modus gebruik word nie.

Hierdie is:

  • implemente
  • koppelvlak
  • laat
  • pakket
  • privaat
  • beskerm
  • publiek
  • staties
  • opbrengs
"use strict";
let public = 1500;      // This will cause an error

Passop!

Die "gebruik streng" opdrag word slegs aan die begin van 'n skrif of 'n funksie herken.