JavaScript “use strict”
'use strict';
afferma che il codice JavaScript dovrebbe essere eseguito in ‘strict mode’. Questo rende più facile scrivere codice JavaScript buono e sicuro. Per esempio,
myVariable = 9;
Qui, myVariable è creato senza dichiararlo. Questo funziona come una variabile globale in JavaScript. Tuttavia, se la usate in modalità strict, il programma darà un errore. Per esempio,
'use strict';// ErrormyVariable = 9;
Il codice qui sopra lancia un errore perché myVariable non è dichiarato. In modalità strict, non potete usare la variabile senza dichiararla.
Per indicare che questo programma è in modalità strict, abbiamo usato
'use strict';
all’inizio del programma.
È possibile dichiarare la modalità strict aggiungendo 'use strict';
o "use strict";
all’inizio di un programma.
Quando dichiarate la modalità strict all’inizio di un programma, avrà portata globale e tutto il codice nel programma verrà eseguito in modalità strict.
Modalità strict nelle variabili
In modalità strict, usare una variabile senza dichiararla genera un errore.
Nota: dovete dichiarare la modalità strict all’inizio del programma. Se dichiarate la modalità strict sotto del codice, non funzionerà.
Per esempio,
console.log("some code");// 'use strict' is ignored// must be at the top"use strict";x = 21; // does not throw an error
Modalità strict in funzione
Potete anche usare la modalità strict dentro una funzione. Per esempio,
myVariable = 9;console.log(myVariable); // 9function hello() { // applicable only for this function 'use strict'; string = 'hello'; // throws an error}hello();
Se usate 'use strict';
dentro una funzione, il codice dentro la funzione sarà in modalità strict.
Nel programma sopra, 'use strict';
è usato dentro la funzione hello()
. Quindi, la modalità strict è applicabile solo all’interno della funzione.
Come potete vedere, all’inizio del programma, myVariable
è usato senza dichiararlo.
Se dichiarate 'use strict';
all’inizio del programma, non potete usare una variabile senza dichiararla anche dentro la funzione. Per esempio,
// applicable to whole program'use strict';function hello() { string = 'hello'; // throws an error}hello();
Nota: La modalità rigorosa non si applica alle dichiarazioni di blocco con {}
parentesi graffe.
Cose non permesse in modalità rigorosa
1. La variabile non dichiarata non è ammessa.
'use strict';a = 'hello'; // throws an error
2. Gli oggetti non dichiarati non sono ammessi.
'use strict';person = {name: 'Carla', age: 25}; // throws an error
3. Eliminare un oggetto non è permesso.
'use strict';let person = {name: 'Carla'};delete person; // throws an error
4. Non è permesso duplicare il nome di un parametro.
"use strict";function hello(p1, p1) { console.log('hello')}; // throws an errorhello();
5. Assegnare ad una proprietà non scrivibile non è permesso.
'use strict';let obj1 = {};Object.defineProperty(obj1, 'x', { value: 42, writable: false });// assignment to a non-writable propertyobj1.x = 9; // throws an error
6. Assegnare ad una proprietà getter-only non è permesso.
'use strict';let obj2 = { get x() { return 17; } };// assignment to a getter-only propertyobj2.x = 5; // throws an error
7. Non è permesso assegnare una nuova proprietà su un oggetto non estensibile.
'use strict';let obj = {};Object.preventExtensions(obj);// Assignment to a new property on a non-extensible objectobj.newValue = 'new value'; // throws an error
8. La sintassi Octal non è permessa.
'use strict';let a = 010; // throws an error
9. Gli argomenti dei nomi delle variabili e eval non sono ammessi.
'use strict';let arguments = 'hello'; // throws an errorlet eval = 44;
10. Non è possibile utilizzare queste parole chiave riservate anche in modalità rigorosa.
implements
interface
let
package
private
protected
public
static
yield
Benefici della modalità rigorosa
L’uso della modalità rigorosa:
- aiuta a scrivere un codice più pulito
- cambia gli errori silenziosi precedentemente accettati (cattiva sintassi) in errori reali e lancia un messaggio di errore
- rende più facile scrivere JavaScript “sicuro”