3.3 KiB
title | localeTitle |
---|---|
Immediately Invoked Functions Expressions(IIFEs) | Выражения мгновенно выработанных функций (IIFE) |
Заявление о функции
Функция, созданная с объявлением функции, является объектом Function и имеет все свойства, методы и поведение объектов Function. Пример:
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 должно всегда заканчиваться a; или он выдаст ошибку.
Плохой пример :
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 engine выполняет над кодом, он создаст глобальный контекст выполнения, когда увидит код и создаст объект функции в памяти для IIFE. И когда он достигает строки 46
из-за которой вызывается функция, новый «контекст выполнения» создается «на лету», поэтому переменная приветствия переходит в контекст выполнения функции не в глобальную, и это делает ее уникальной. This ensures that code inside IIFE does not interfere with other code or be interfered by another code
поэтому код безопасен.
Больше информации
Немедленное выражение функции в Википедии Что делает ведущая точка с запятой в библиотеках JavaScript?