"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";
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)
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)
Cancellazione di una variabile (o un oggetto) non è consentito.
"use strict";
var x = 3.14;
delete x; // This
will cause an error
L'eliminazione di una funzione non è permesso.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
Duplicazione di un nome di parametro non è consentito:
"use strict";
function x(p1, p1) {}; // This will cause an error
Ottali letterali numerici non sono consentiti:
"use strict";
var x = 010; // This
will cause an error
Fuga caratteri non sono consentiti:
"use strict";
var x = \010; // This will cause an error
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
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
L'eliminazione di una proprietà undeletable non è consentito:
"use strict";
delete Object.prototype; // This will cause an error
La stringa "eval" non può essere usato come una variabile:
"use strict";
var eval = 3.14; // This will cause an error
La stringa "argomenti" non possono essere utilizzati come una variabile:
"use strict";
var arguments = 3.14; // This will cause an error
L'istruzione with non è consentito:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
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
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
Attento!
Attento!
Il "use strict" direttiva viene riconosciuto solo all'inizio di uno script o una funzione.