Немедленно вызываемая функция javascript
Описание немедленно вызываемой функции
Рассмотрим конструкцию (…)()
. Любая функция вызывается при помощи следующего синтаксиса:
function_name()
, однако следует иметь ввиду, что вместо
function_name
можно указать любое выражение, ссылающиеся на экземпляр функции. Поэтому вас не должна удивлять такая запись:
var karamba = function(){……};
result = karamba();
В случае если оператор вызова функции ()
нужно применить ко всему выражению, то такое выражение заключается в круглые скобки. Поэтому первая пара круглых скобок в конструкции (…)()
служит ограничителем, а вторая пара круглых скобок служит оператором. Воспользуемся этим и перепишем вышеприведенный пример:
var karamba = function(){……};
result = (karamba)();
Итак, в первых круглых скобках должна быть ссылка на выполняемую функцию или сама анонимная функция собственной персоной:
(function(){……})();
Немедленно вызываемая функция очень эффективна в определенных ситуациях.
Передача аргументов немедленно вызываемой функции
(function(arg){console.log(arg)})('первый пошел'');Используется, например, для оболочки (во избежании конфликтов), которая определяет $
как ссылку на jQuery.
(function($){
$('a').css({'color':'red'})}
)(jQuery);
Альтернативный синтаксис
javascript
(function(){
console.log("ogo");
}())
Данный шаблон работает только с функциями-выражениями(именованные, анонимные). И сразу вызывет функцию после ее определеия
Существует альтернативный синтаксис:
javascript
(function(){
console.log("atu");
})();
Данная конструкция создает свою (изолированную) область видимости.
Описание шаблона для немедленно вызываемой функции:
1 Определяем функцию выражение.
function(arg1, arg2){
console.log(arg1 + " и " + arg2);
2 Добавляем круглые скобки в конце, что позволяет нам вызвать функцию немедленно.
function(arg1, arg2){
console.log(arg1 + " и " + arg2);
}("Значений 1","Значение 2")
3 Вышеописанную конструкцию заключаем в круглые скобки.
(function(arg1, arg2){
console.log(arg1 + " и " + arg2);
}("Значений 1","Значение 2"));
Параметры и немедленно вызываемая функция
Немедленно вызываемым функциям можно передавать параметры:
js
(function(arg1, arg2){
console.log(arg1 + " и " + arg2);
}("Значений 1","Значение 2"));
//Значений 1 и Значение 2
Освобождаем $
, чтобы любая другая библиотека могла его использовать
Создаем окружение, где $
ссылается на объект jQuery
jQuery
(function($)
{ /* Тело функции */ }
)(jQuery)
(
function($)
{ /* Тело функции */ }
)
/*
выше приведена ф-я, заключенная в круглые скобки,
с целью превратить ее
в выражение с результатом в виде ссылки на анономную ф-ю,
возвращаемую как значение выражения.
Функции передается $, то есть на все,
что передается этой ф-и можно ссылаться по идентификатору $
*/
(jQuery)
/* вызывает ф-ю и передает объект jQuery анонимной ф-и в качестве аргумента */
Здесь внешнее объявление $
недоступно в пределах тела функции.
Комментарии к статье