Gli ultimi tutorial di sviluppo web
 

JavaScript utilizzare Strict


"use strict"; Definisce che il codice JavaScript deve essere eseguito in "rigorosa modalità".


Il "use strict" direttiva

Il "use strict" direttiva è nuovo in JavaScript 1.8.5 (ECMAScript version 5) .

Non è una dichiarazione, ma una espressione letterale, ignorato dalle versioni precedenti di JavaScript.

Lo scopo di "use strict" sta ad indicare che il codice deve essere eseguito in "strict mode".

Con la modalità rigorosa, non è possibile, ad esempio, utilizzare le variabili non dichiarate.

Modalità rigorosa è supportato in:
IE dalla versione 10. Firefox dalla versione 4.
Chrome dalla versione 13. Safari dalla versione 5.1.
Opera dalla versione 12.


Dichiarare modalità Strict

Modalità rigorosa viene dichiarata con l'aggiunta di "use strict"; per l'inizio di uno script o una funzione.

Dichiarato all'inizio di uno script, ha ambito globale (tutto il codice nello script verrà eseguito in modalità rigorosa):

Esempio

"use strict";
x = 3.14;       // This will cause an error (x is not defined)
Prova tu stesso "

Esempio

"use strict";
myFunction();

function myFunction() {
    y = 3.14;   // This will also cause an error (y is not defined)
}
Prova tu stesso "

Dichiarata all'interno di una funzione, ha un ambito locale (solo il codice all'interno della funzione è in modalità rigorosa):

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

function myFunction() {
   "use strict";
    y = 3.14;   // This will cause an error (y is not defined)
}
Prova tu stesso "

Il "use strict"; Sintassi

La sintassi, per dichiarare la modalità rigorosa, è stato progettato per essere compatibile con le versioni precedenti di JavaScript.

La compilazione di un letterale numerico (4 + 5;) o una stringa letterale ("John Doe";) in un programma JavaScript non ha effetti collaterali. Compila semplicemente una variabile non esistente e muore.

Così "use strict" ; conta solo per i nuovi compilatori che "capire" il significato di esso.


Perché la modalità Strict?

modalità rigorosa rende più facile scrivere "sicuro" JavaScript.

cambia modalità rigorosa accettate in precedenza "cattivo sintassi" in veri e propri errori.

Ad esempio, nel normale JavaScript, errori di digitazione un nome di variabile crea una nuova variabile globale. In modalità rigorosa, questo genera un errore, rendendo impossibile creare accidentalmente una variabile globale.

Nel normale JavaScript, uno sviluppatore non riceverà tutte le risposte errore assegnare valori alle proprietà non scrivibili.

In modalità rigorosa, qualsiasi assegnazione a una proprietà non-scrivibile, una proprietà getter-only, un non-esistente di proprietà, una variabile non esistente, o di un oggetto non esistente, viene generato un errore.


Non ammessi in modalità rigorosa

Utilizzando una variabile, senza dichiararlo, non è consentito:

"use strict";
x = 3.14;                // This will cause an error (x is not defined)

Prova tu stesso "

Gli oggetti sono variabili troppo.

L'utilizzo di un oggetto, senza dichiararlo, non è consentito:

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

Prova tu stesso "

Cancellazione di una variabile (o un oggetto) non è consentito.

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

Prova tu stesso "

L'eliminazione di una funzione non è permesso.

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

Prova tu stesso "

Duplicazione di un nome di parametro non è consentito:

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

Prova tu stesso "

Ottali letterali numerici non sono consentiti:

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

Prova tu stesso "

Fuga caratteri non sono consentiti:

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

Prova tu stesso "

La scrittura di una proprietà di sola lettura non è consentito:

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

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

Prova tu stesso "

La scrittura di una proprietà get-solo non è consentito:

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

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

Prova tu stesso "

L'eliminazione di una proprietà undeletable non è consentito:

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

Prova tu stesso "

La stringa "eval" non può essere usato come una variabile:

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

Prova tu stesso "

La stringa "argomenti" non possono essere utilizzati come una variabile:

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

Prova tu stesso "

L'istruzione with non è consentito:

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

Prova tu stesso "

Per motivi di sicurezza, eval() non è consentito di creare le variabili del perimetro da cui è stato chiamato:

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

Prova tu stesso "

In chiamate di funzione come f() , il valore di questo è stato l'oggetto globale. In modalità rigorosa, ora è indefinito.


Prova futura!

parole chiave riservate future non sono consentiti in modalità rigorosa. Questi sono:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // This will cause an error

Prova tu stesso "


Attento!

Attento!

Il "use strict" direttiva viene riconosciuto solo all'inizio di uno script o una funzione.