Modalità rigorosa di JavaScript
- Pagina precedente Hoisting JS
- Pagina successiva Parola chiave this JS
"use strict";
Definisce che il codice JavaScript dovrebbe essere eseguito in "modalità rigorosa".
Direttiva "use strict"
"use strict"
È una nuova direttiva in JavaScript 1.8.5 (versione ECMAScript 5).
Non è una frase, ma un'espressione di testo, che le versioni precedenti di JavaScript ignorano.
"use strict";
Il suo significato è indicare che il codice JavaScript dovrebbe essere eseguito in "modalità rigorosa".
In modalità rigorosa, non è possibile, ad esempio, utilizzare variabili non dichiarate.
Ecco le versioni di browser che supportano il modulo di scrittura rigorosa:
- Versioni successive alla 10 di IE
- Versioni successive alla 4 di Firefox
- Versioni successive alla 13 di Chrome
- Versioni successive alla 5.1 di Safari
- Versioni successive alla 12 di Opera
Declarare il modulo di scrittura rigorosa
Aggiungendo all'inizio dello script o della funzione: "use strict";
Per dichiarare il modulo di scrittura rigorosa.
Declarare il modulo di scrittura rigorosa all'inizio dello script, con ambito globale (tutto il codice nello script viene eseguito in modalità rigorosa):
Esempio
"use strict"; x = 3.14; // Questo causerà un errore, perché x non è stato dichiarato
Esempio
"use strict"; myFunction(); function myFunction() { y = 3.14; // Questo causerà un errore, perché y non è stato dichiarato }
Declarare il modulo di scrittura rigorosa all'interno della funzione, con ambito locale (solo il codice nella funzione viene eseguito in modalità rigorosa):
x = 3.14; // Questo non causerà un errore myFunction(); function myFunction() { "use strict"; y = 3.14; // Questo causerà un errore }
"use strict"; sintassi
La sintassi del modulo di scrittura rigorosa è progettata per essere compatibile con versioni precedenti di JavaScript.
Compilare testi numerici (ad esempio 4+5) o testi stringa ("Bill Gates") nel codice JavaScript non ha effetti negativi. Semplicemente vengono compilati come variabili inesistenti e scompaiono.
Tutto "use strict";
Impatta solo sui compilatori che "comprendono" il suo significato.
Perché utilizzare la modalità rigorosa?
La modalità rigorosa ci rende più facili a scrivere JavaScript "sicuri".
La modalità rigorosa trasforma i "cattivi linguaggi" accettabili in errori reali.
Per esempio, in JavaScript comune, l'errore di battitura del nome della variabile crea una nuova variabile globale. In modalità rigorosa, ciò lancerà un errore, rendendo impossibile creare variabili globali in modo accidentale。
In JavaScript comune, se si assegna a un attributo non scrivibile, lo sviluppatore non riceverà alcun feedback di errore。
In modalità rigorosa, l'attributo non scrivibile, solo letto, inesistente, o l'attributo assegnato a una variabile o oggetto inesistente, lancerà un errore。
Cosa non è permesso nel modello rigoroso
L'uso di variabili senza dichiarazione non è permesso:
"use strict"; x = 3.14; // Questo causerà un errore
Gli oggetti sono variabili
L'uso di oggetti senza dichiarazione non è permesso:
"use strict"; x = {p1:10, p2:20}; // Questo causerà un errore
L'eliminazione di variabili (o oggetti) non è permessa:
"use strict"; var x = 3.14; delete x; // Questo causerà un errore
L'eliminazione di funzioni non è permessa:
"use strict"; function x(p1, p2) {}; delete x; // Questo causerà un errore
I nomi di parametri duplicati non sono permessi:
"use strict"; function x(p1, p1) {}; // Questo causerà un errore
I testi numerici ottali non sono permessi:
"use strict"; var x = 010; // Questo causerà un errore
I caratteri di escape non sono permessi:
"use strict"; var x = \010; // Questo causerà un errore
La scrittura di attributi readonly non è permessa:
"use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // Questo causerà un errore
La scrittura di attributi solo letti non è permessa:
"use strict"; var obj = {get x() {return 0} }; obj.x = 3.14; // Questo causerà un errore
L'eliminazione di attributi non eliminabili non è permessa:
"use strict"; delete Object.prototype; // Questo causerà un errore
La stringa "eval" non può essere utilizzata come variabile:
"use strict"; var eval = 3.14; // Questo causerà un errore
La stringa "arguments" non può essere utilizzata come variabile:
"use strict"; var arguments = 3.14; // Questo causerà un errore
with
E' vietato lo statement:
"use strict"; with (Math){x = cos(2)}; // Questo causerà un errore
Non è permesso per motivi di sicurezza eval()
Creare variabili nell'ambito in cui viene chiamata:
"use strict"; eval ("var x = 2"); alert (x); // Questo causerà un errore
Nel chiamare una funzione simile a f(), il valore di this è l'oggetto globale. Nel modo rigoroso, ora è diventato undefined
.
Garanzia futura
Non è permesso utilizzare parole chiave riservate per il futuro nel modo rigoroso. Sono:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict"; var public = 1500; // Questo causerà un errore
Avviso
"use strict"
Le istruzioni possono essere utilizzate solo in script o funzioni dellaInizioRiconosciuto.
- Pagina precedente Hoisting JS
- Pagina successiva Parola chiave this JS