freeCodeCamp/guide/portuguese/javascript/immediately-invoked-functio.../index.md

2.5 KiB

title localeTitle
Immediately Invoked Functions Expressions(IIFEs) Expressões de Funções Imediatamente Invocadas (IIFEs)

Declaração de Função

Uma função criada com uma declaração de função é um objeto Function e possui todas as propriedades, métodos e comportamento dos objetos Function. Exemplo:

  function statement(item){ 
    console.log('Function statement example '+ item); 
  } 

Expressão de Função

Uma expressão de função é semelhante à instrução de função, exceto que o nome da função pode ser omitido para criar funções anônimas. Exemplo:

  var expression = function (item){ 
    console.log('Function expression example '+ item); 
  } 

Expressões de Funções Imediatamente Invocadas

Logo que a função é criada, ela não precisa invocar explicitamente. Na variável de exemplo abaixo, iife armazenará uma string retornada pela execução da função.

  var iife = function (){ 
    return 'Immediately Invoked Function Expressions(IIFEs) example '; 
  }(); 
  console.log(iife); // 'Immediately Invoked Function Expressions(IIFEs) example ' 

A declaração antes do IIFE deve sempre terminar com a; ou isso causará um erro.

Exemplo ruim :

var x = 2 //no semicolon, will throw error 
 (function(y){ 
  return x; 
 })(x); //Uncaught TypeError: 2 is not a function 

Por que usar expressões de funções invocadas imediatamente?

  (function(value){ 
    var greet = 'Hello'; 
    console.log(greet+ ' ' + value); 
  })('IIFEs'); 

No exemplo acima, quando o mecanismo de javascript executa o código acima, ele cria um contexto de execução global quando vê um código e cria um objeto de função na memória para o IIFE. E quando chega na linha 46 devido a qual função é Invocada, um novo contexto de execução é criado em tempo real e assim que a variável greet entra nesse contexto de execução da função, não no global, isto é o que o torna único. This ensures that code inside IIFE does not interfere with other code or be interfered by another code e, portanto, o código é seguro.

Mais Informações

Expressão de função invocada imediatamente na Wikipedia O que o ponto-e-vírgula líder nas bibliotecas JavaScript faz?