Articles

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.

implementsinterfaceletpackageprivateprotectedpublicstaticyield

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”

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *