Executando verificação de segurança...
1

Olá Luiz.
No inicio quando tudo era feito com var e function, não existiam conceitos como class e module e o código js ficava "solto" dentro do arquivo, usava o IIFE para organizar o código e inicializar objetos sem que isso gerasse conflito com outras funções e variáveis. Em resumo criava um escopo para um conjunto de funções e variáveis. Hoje existem outras formas de contornar isso como trabalhar com class, modules, const e let.

Fiz um exemplo aqui https://onecompiler.com/javascript/3zs7qk79n para tentar exemplificar.

Você pergunta se é correto usar IIFE. Depende para o que vc está usando. Se for para organizar o código, talvez seja melhor trabalhar com modules e usar import e export (https://www.w3schools.com/js/js_modules.asp). A não ser que esteja tentando manter compatibilidade com navegadores muito antigos como o IE.

Block Statement cria um escopo para um bloco. IIFE declara e executa imediatamente uma função. O efeito é semelhante, mas o objetivo é diferente.

O problema de funções e variáveis globais é realmente o conflito. Se vc declara uma var nome em um arquivo js e em outro arquivo também declara var nome a segunda vai sobreescrever a primeira. A mesma coisa para funções.

Carregando publicação patrocinada...
1

Entendi agora, obrigado! Por conta de eu não ter visto ainda o conteúdo de classes e módulos, acredito que o vídeo que vi preferiu usar IIFE para não adiantar muito a matéria...