Открыть меню    

Немедленно вызываемая функция 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 анонимной ф-и в качестве аргумента */

Здесь внешнее объявление $ недоступно в пределах тела функции.

Комментарии к статье

Добавить комментарий к сниппету

мнемосхема для инвалидов