Per molto tempo JavaScript si è evoluto senza problemi di compatibilità . Nuove funzionalità venivano aggiunte al linguaggio, ma quelle vecchie non cambiavano.
Questo ha consentito al vecchio codice di non diventare obsoleto. Ma lo svantaggio è stato che cosi facendo gli errori e le decisioni imperfette fatte dai creatori di JavaScript, rimarranno nel linguaggio per sempre.
Cosi è stato fino al 2009 quando è apparsa ECMAScript 5 (ES5). Ha aggiungo nuove funzionalità al linguaggio e ne ha modificate alcune già esistenti. Per far si che il vecchio codice continui a funzionare, molte modifiche vengono disattivate di default. Diventa quindi necessario abilitarle esplicitamente con la direttiva "use strict".
âuse strictâ
La direttiva è simile ad una stringa: "use strict" o 'use strict'. Quando viene inserita allâinizio dello script, da quel momento lâintero script funziona nello stile âmodernoâ.
Per esempio:
"use strict";
// questo codice viene eseguito secondo gli standard moderni
...
Impareremo presto le funzioni (un modo per raggruppare le istruzioni).
Guardando avanti, notiamo che "use strict" può essere applicato allâinizio di una funzione (la maggior parte) piuttosto che allâintero script. La modalità strict sarà quindi attiva solo allâinterno di quella funzione. Solitamente si utilizza nellâintero script.
Assicurati "use strict" sia allâinizio dello script, altrimenti la modalità script non verrà abilitata.
Qui vediamo un esempio in cui non verrà attivata la modalità strict:
alert("some code");
// "use strict" qui sotto viene ignorato -- la dichiarazione deve stare sempre in cima
"use strict";
// strict mode non è attiva
Solo i commenti possono apparire prima di "use strict".
use strictNon esiste nessuna direttiva "no use strict" o simile, che possa riportare lo script alla vecchia modalità .
Una volta abilitata la modalità strict, non câe ritorno.
Browser console
In futuro, quando utilizzerete la console integrata in un browser, dovete tenere a mente che di default non vale use strict.
In certe situazioni, use strict fa veramente la differenza, quindi potreste ottenere dei risultati indesiderati.
Potete provare con Shift+Enter per inserire più righe di codice, con use strict in cima, come nellâesempio:
'use strict'; <Shift+Enter for a newline>
// ...your code
<Enter to run>
Funziona nella maggior parte dei browser, tra cui Firefox e Chrome.
Nel caso in cui non funzioni, la miglior strada da seguire è quella di assicurarsi che use strict venga inserito, in questo modo:
"use strict";
// codice
...
Dovremmo utilizzare âuse strictâ?
Può sembrare una domanda ovvia, ma non lo è.
Potrebbero consigliarvi di iniziare tutti gli script con "use strict"⦠Ma sapete cosa câè di bello?
JavaScript moderno supporta le âclassiâ e i âmoduliâ â delle strutture avanzate del linguaggio (a cui arriveremo più avanti), che abilitano use strict in automatico. Quindi non è necessario inserire la direttiva "use strict" se utilizziamo queste funzionalità .
Quindi, per ora "use strict"; è un ospite ben accetto nei vostri script. Più avanti, quando il vostro codice sarà suddiviso in classi e moduli, potrete ometterlo.
Al momento, è sufficenete una conoscenza generica di use strict.
Nei prossimi capitoli, quando impareremo nuove funzionalità del linguaggio, vedremo più nel dettaglio le differenze tra la âstrict modeâ e la âvecchia modalità â. Fortunatamente, non sono molte e sono anche molto utili.
Tutti gli esempi in questo tutorial assumono che la âstrict modeâ sia attiva, tranne in alcuni rarissimi casi (in cui sarà specificato).
Commenti
<code>, per molte righe â includile nel tag<pre>, per più di 10 righe â utilizza una sandbox (plnkr, jsbin, codepenâ¦)