⊗jsPmFCPS 273 of 505 menu

Punto e virgola per sicurezza in IIFE

Supponiamo ora che la nostra funzione immediatamente invocata non inizi con un segno più, ma sia racchiusa tra parentesi tonde, in questo modo:

(function() { console.log(1); // stamperà 1 })();

Supponiamo che la variabile num sia definita all'esterno della funzione:

let num = 1; // il punto e virgola è presente (function() { console.log(num); // stamperà 1 })();

Supponiamo ora di aver dimenticato di mettere il punto e virgola:

let num = 1 (function() { console.log(num); //!! darà un errore })();

Risulta che questo codice darà un errore, poiché JavaScript percepisce la nostra funzione come una continuazione del comando della prima riga.

Per evitare tali problemi, prima di chiamare una funzione immediata è sempre necessario mettere un punto e virgola, in questo modo:

let num = 1 ;(function() { console.log(num); // stamperà 1 })();

Potrebbe sembrare che il problema sia un po' artificioso. In realtà, non è così. Può succedere che sulla tua pagina vengano inclusi diversi script da file separati. In questo caso, alla fine di un file potrebbe essere omesso il punto e virgola e questo automaticamente causerà un problema se il secondo file inizia con una chiamata di funzione immediata.

Pertanto, metti sempre, sempre il punto e virgola prima di chiamare una funzione immediata, anche se in questo momento sei sicuro che non ci saranno problemi. Potrebbero sorgere in seguito.

Applichiamo quanto detto sopra e chiamiamo la funzione immediata, mettendo un punto e virgola all'inizio:

;(function() { console.log(1); // stamperà 1 })();

Determina, senza eseguire il codice, cosa verrà stampato in console:

let str = 'str'; (function() { console.log(1); })();

Determina, senza eseguire il codice, cosa verrà stampato in console:

let str = 'str' (function() { console.log(1); })();
Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta