IIFE i JavaScript: Hvad er øjeblikkeligt påkaldte funktionsudtryk?

Funktionserklæring

En funktion oprettet med en funktionserklæring er et funktionsobjekt og har alle egenskaber, metoder og opførsel af funktionsobjekter. Eksempel:

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

Funktionsudtryk

Et funktionsudtryk svarer til funktionserklæringen, bortset fra at funktionsnavnet kan udelades for at oprette anonyme funktioner. Eksempel:

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

Umiddelbart påkaldte funktioner Udtryk

Så snart funktionen oprettes, påkalder den sig selv ikke behøver at påberåbe sig eksplicit. I nedenstående eksempel vil variabel iife gemme en streng, der returneres af funktionens udførelse.

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

Erklæringen før IIFE skal altid slutte med en; eller det kaster en fejl.

Dårligt eksempel :

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

Hvorfor bruge udtryk for øjeblikkeligt påkaldte funktioner?

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

I ovenstående eksempel, når javascript-motoren udfører ovennævnte kode, skaber den global udførelseskontekst, når den ser kode og opretter funktionsobjekt i hukommelsen til IIFE. Og når den når online på 46grund af hvilken funktion der påberåbes, oprettes der en ny eksekveringskontekst på farten, og så hilser variablen ind i den funktionskørselskontekst, ikke til den globale, det er det, der gør den unik. This ensures that code inside IIFE does not interfere with other code or be interfered by another codeog så er kode sikker.

Mere information

  • Umiddelbart påkaldt funktionsudtryk på Wikipedia
  • Hvad gør det førende semikolon i JavaScript-biblioteker?