IIFE в JavaScript: Какво представляват незабавно извиканите функционални изрази?

Изложение на функциите

Функция, създадена с декларация за функция, е обект на функция и има всички свойства, методи и поведение на обектите на функция. Пример:

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

Израз на функцията

Изразът на функция е подобен на израз на функция, с изключение на това, че името на функцията може да бъде пропуснато за създаване на анонимни функции. Пример:

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

Незабавно извикани функции

Щом функцията бъде създадена, тя се извиква, не е необходимо да извиква изрично. В примера по-долу променливата iife ще съхранява низ, който се връща от изпълнението на функцията.

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

Изявлението пред IIFE винаги трябва да завършва с; или ще изведе грешка.

Лош пример :

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

Защо да използвам незабавно извикани изрази на функции?

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

В горния пример, когато двигателят на javascript изпълни горния код, той ще създаде глобален контекст на изпълнение, когато види код и ще създаде функционален обект в паметта за IIFE. И когато достигне онлайн, 46поради която функция се извиква, се създава нов контекст на изпълнение в движение и така променливата greet влиза в контекста на изпълнение на тази функция, а не в глобалния, това го прави уникален. This ensures that code inside IIFE does not interfere with other code or be interfered by another codeи така кодът е безопасен.

Повече информация

  • Незабавно извикан израз на функция в Wikipedia
  • Какво прави водещата точка и запетая в JavaScript библиотеките?