Guardiamo i diversi scenari in cui questo semplice cambiamento può aiutarvi.

Una variabile non viene aggiunta all’oggetto globale/finestra se non è dichiarata.

Per default, se una variabile non dichiarata è definita, viene aggiunta all’oggetto globale/finestra. Questo può creare un errore e può anche essere difficile da trovare.

La variabile non dichiarata viene aggiunta all’oggetto globale

Per evitare tali scenari, possiamo dichiarare use strict. La modalità strict non permette l’uso di variabili che non sono state dichiarate.

Le variabili non dichiarate non vengono aggiunte all’oggetto globale

Non si possono dichiarare variabili che potrebbero essere usate come parole di riserva future.

Eccezione di parola riservata

Come possiamo vedere nell’esempio precedente, sul lato sinistro siamo stati in grado di dichiarare una variabile e nominarla let che è una parola chiave riservata ES6. Tecnicamente questo dovrebbe lanciare un’eccezione, ma è ignorato dal compilatore.

Inoltre, possiamo vedere sul lato destro, abbiamo ottenuto un errore di sintassi passando ad un contesto operativo strict. Dovremmo optare per la modalità strict, per evitare di usare una parola chiave riservata per i nomi delle variabili.

Impedisce di cancellare funzioni, variabili e argomenti di funzioni:

L’operatore delete in sé è usato per rimuovere una proprietà su un oggetto.

Eliminare una proprietà sintassi valida

L’operatore delete non può essere usato per eliminare una funzione, variabile o argomenti.

delete può rimuovere solo le proprietà

Quando è in modalità strict lancerà un’eccezione Type Error. Questo accade perché stiamo cercando di eliminare una proprietà ma il valore stesso.

Eccezione di errore di tipo

L’uso di eval viene limitato:

In JS la funzione eval è usata per eseguire espressioni JavaScript in formato stringa.

utilizzando eval

Proviamo ad implementare lo stesso codice in modalità strict:

l’espressione eval non viene eseguita

Lascia un commento

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