2013-10-04 3 views
6

Я не нашел сообщение с просьбой о шаблоне, подобном этому, извините, если я пропустил его.Каково название/назначение этого шаблона?

Во всяком случае, я repeateadly увидеть эту модель во многих плагинов JQuery или сценариев:

(function() { 
    ........... 
}()); 

Что это его цель? У него есть имя?

Спасибо!

+1

Это функция, которая выполняется немедленно – Joren

+1

** ** ** ** ** ** ** ** ** ** ** * ** * Здесь 'function' используется как _operator_, а не _statement_, а затем'() 'позволяет ему вызываться, как только он интерпретируется. –

+0

IIFE - http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – shem86

ответ

5

Он также известен как Сразу запущенной функции Expression

Бен Alman имеет a good article covering IIFE usage, и почему «прямоприменяемых анонимные функции "не является лучшей терминологией:

Один из наиболее выгодных побочных эффектов I mmediately-Invoked Выражения функции - это то, что это неназванное или анонимное выражение функции вызывается немедленно, без использования идентификатора , закрытие может использоваться без загрязнения текущей области.

[... T] термин «self-executing» несколько вводит в заблуждение, потому что это не функция, которая выполняется сама по себе, хотя функция выполняется . Кроме того, «анонимный» не имеет особого значения, так как выражение «Вызываемое мгновенное выражение» может быть анонимным или . А что касается моего предпочтения «вызывается» над «исполненным», это простой вопрос аллитерации; Я думаю, что «IIFE» выглядит и звучит лучше, чем

3

Это Выраженная операционная функция.
Это полезно для создания области для ее содержимого. Это похоже на это:

function myFunc() { 
    //code 
} 
myFunc(); 

Но есть 2 отличия:

  • Функция называется здесь
  • Приведенный выше код представляет собой объявление функции, отличается от выражения функции. «MyFunc» выше получает хранится в виде переменной, если не использовать его как выражение, например, так:

    foo(function myFunc() { 
        //code 
    }); 
    

Тогда он не будет храниться в переменной.

+0

Тот же результат - может быть. Но это именованная функция, и этот пример является анонимным. Просто записка. – David

+0

Его пример НЕ является функцией самоисполнения. И твой тоже. Функция самоисполнения - это функция, которая сама вызывает себя. Твой вызов вызывается только на улице. –

+0

@JoeSimmons, увидел теперь ваше редактирование. Очередь просмотра отклонила его, но я использовал его. Спасибо. – Sergio

3

Это сразу вызывается функция выражения (Fiddle):

(function() { 
    alert("pee"); 
}()); 
+0

Его пример НЕ является самоисполняемой функцией. И твой тоже. Функция самоисполнения - это функция, которая сама вызывает себя. Твой вызов вызывается только на улице. –

+0

Рад, что вы это исправили, но извините, я не могу отказаться. Я бы сделал, если б мог. –

+0

@JoeSimmons Просто нажмите на downvote еще раз;) – Joren

1

Это немедленно вызываемая функция «IEFE.» - как только вы объявляете его, он получает вызвал.

Синтаксис () в Javascript означает «вызов этой функции с любыми аргументами между ( и ).Поскольку между скобками в вашем примере нет ничего, аргументы функции не передаются; но если вам нужно предоставить аргументы, вы можете сделать что-то вроде этого:

(function foo(arg1, arg2) { 
    alert(arg1 + " " + arg2); 
})(3, 5); 

Который будет немедленно позвонить foo() и пройти в 3 и 5 как два аргумента.

+0

Я бы сказал, что он вызван, но я думаю, что вы тоже работаете. –

+0

Глупости, он получает Ewok'd. ;) – Bucket

+0

На самом деле, я просто [посмотрел вверх] (http://au.answers.yahoo.com/question/index?qid=20100425233948AAE7gRZ) различие между invoke и evoke и invoke - правильный термин здесь. И хорошая шутка, лол. –

Смежные вопросы