https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#style -y010
Ele menciona fechamentos de JavaScript e IIFE. Mas usar o IIFE para criar um escopo local para evitar vazamento para o espaço global não tem nada a ver com fechamentos.
Na linguagem C, não há fechamento, mas podemos usar a mesma técnica ou uma técnica semelhante como IIFE para criar um escopo local e criar variáveis que não vazarão para o espaço global. Portanto, fechamentos e IIFE são conceitos diferentes. O que está sendo usado é o IIFE. Encerramento, realmente não importa se existe ou não neste caso. Será melhor se usarmos e propagarmos o conceito correto.
Talvez em C não haja fechamento, mas em JavaScript "Um IIFE é frequentemente usado para criar escopo para encapsular módulos. Dentro do módulo, há um escopo privado que é independente e seguro contra modificações indesejadas ou acidentais. Esta técnica, chamada de módulo padrão, é um exemplo poderoso de uso de fechamentos para gerenciar o escopo ".
http://www.sitepoint.com/demystifying-javascript-closures-callbacks-iifes/
esse é um conceito incorreto. Isolar variáveis locais dentro de um escopo local é IIFE e não tem nada a ver com fechamento.
Eu (meio que) concordo com @jianlin aqui. Normalmente não há fechamentos envolvidos no registro de um serviço / controlador / filtro / diretiva / etc Angular dentro de um IIFE (como sugerido neste guia).
Um IIFE é frequentemente usado para criar escopo para encapsular módulos
@MAustinMMDP , porque _ "é frequentemente usado" _, não significa que seja usado _todas as vezes_.
O Angular tem seu próprio sistema de módulo, então (pelo que eu entendo este guia de estilo) IIFEs não são usados como um meio para encapsular módulos, mas como uma forma de isolar variáveis locais (por exemplo, declarações de função) do contexto global.
Nesse sentido, a citação de http://www.sitepoint.com/demystifying-javascript-closures-callbacks-iifes/ é correta (em geral), mas irrelevante (neste caso específico).
na verdade, a linha no SitePoint realmente deveria dizer algo como:
Um IIFE é freqüentemente usado para criar escopo para encapsular módulos. Dentro do módulo, há um escopo privado que é independente e seguro contra modificações indesejadas ou acidentais. Esta técnica, chamada de padrão de módulo, é um exemplo poderoso de uso de [escopo local, ou uma função com escopo local, ou simplesmente, uma função] para gerenciar o escopo e é amplamente usada em muitas das bibliotecas JavaScript modernas
o que significa é:
o padrão de módulo é um exemplo poderoso de uso de um escopo local para evitar vazamento no escopo global.
Deve apenas dizer "Escopo"