⊗jsPmFCPS 273 of 505 menu

Ponto e vírgula para segurança em IIFE

Suponha que nossa função imediatamente invocada não comece com um sinal de mais, mas seja envolta por parênteses, assim:

(function() { console.log(1); // exibirá 1 })();

Suponha que a variável num seja definida fora da função:

let num = 1; // ponto e vírgula está presente (function() { console.log(num); // exibirá 1 })();

Agora, suponha que nos esquecemos de colocar o ponto e vírgula:

let num = 1 (function() { console.log(num); //!! lançará um erro })();

Isso significa que esse código lançará um erro, pois o JavaScript interpreta nossa função como uma continuação do comando da primeira linha.

Para evitar tais problemas, é sempre necessário colocar um ponto e vírgula antes da invocação da função imediata, assim:

let num = 1 ;(function() { console.log(num); // exibirá 1 })();

Pode parecer que o problema é um pouco artificial. Na verdade, não é. Pode acontecer uma situação em que você tem vários scripts incluídos em arquivos separados em sua página. Neste caso, o ponto e vírgula pode estar omitido no final de um arquivo e isso automaticamente levará a um problema se o segundo arquivo começar com uma invocação de função imediata.

Portanto, sempre, sempre coloque um ponto e vírgula antes de invocar uma função imediata, mesmo que você tenha certeza de que não haverá problemas no momento. Eles podem surgir posteriormente.

Vamos aplicar o que foi dito acima e invocar a função imediata, colocando um ponto e vírgula no início:

;(function() { console.log(1); // exibirá 1 })();

Determine, sem executar o código, o que será exibido no console:

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

Determine, sem executar o código, o que será exibido no console:

let str = 'str' (function() { console.log(1); })();
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar