Това означава, че JavaScript синтаксис (функция ()

За да се избегнат неверни данни, които в достатъчна тази тема, вмъкнати и двете ми цента:

подобен въпрос вече отговорих - Проблемът с процесорите от цикъла. Само имаше синтаксис подобен разтвор

в действителност, това IIFE - Веднага спряганата Функция Expression, и за това, което може да се използва вече е описано тук, но защо PIT се използва в сценария от линка:

така че винаги, когато в цикъла работи с асинхронни функции, независимо дали е време за изчакване, със събития, и извика, винаги iskolzuetsya подобна техника

Това се прави, за да не се замърсява глобалния обхват и локалните променливи и се срещна с копия на най-важния световен пример в JQuery. Това е:

Този код в глобалния обхват само добавя myVal и разполага със собствен копие на прозореца и неопределени (неопределени не е ключова дума и глобалната променлива) в случай, че някой би могъл да напише след изпълнението на този код:

след това (ако е -tsii без аргументи те вземе стойността неопределено) ще имаме истинска стойност неопределена, и реалната стойност на прозореца.

Специално за @theshock потребител:

Основният недостатък на този отговор не е в това, че той - неправилно в своята същност. Не, аз съм сигурен, че книгата, от която сте копирали всичко това може да бъде много добър (между другото, каква е тази книга?), Но няма отговор на въпроса в темата, която даде, например, Спектър.

Вие току-що потвърди, че отговорът не е чел (или да прочетете на случаен принцип), и следователно, да кажем това, което идва на ум (меко казано).

Това означава, че вие ​​не знаете какъв вид книга, но уверено да се каже, че тя е копиран - без да знае как? И се прави ясно изявление?

Цитирам отново (да потвърди, че не сте прочели отговора):

Между другото, какво е тази книга?

Йеше да актуализира 1. Има ред:

Тя е копие поставите? PF, доста по-напред - в Google, да намерите тук книгите (ако искате):

Направи го. Не бъдете мързеливи. Open. Forward. Намерете реда къде точно както са описани в отговора. Ако намерите поне нещо подобно (което, разбира се, няма да се случи), след това имам проблем с главата.

В случай, че не направите това:

P.S веднъж JS ме учили на тези книги, и мога да кажа със сигурност, че:

Но не се вземат думата си за него - не забравяйте да го проверите.

И още нещо: Ако нещата се наричат ​​"едно име" - това не означава, че всички хора, копирайте и поставете един от друг. В този случай, това е просто една фраза

Това се нарича закриване или обвивка. Както бе посочено по-горе, чрез използването на оригинални глобални обекти в рамките тялото на функция, voziozhnosti Закриване далеч не се ограничава само до това. Това е само една малка част от заявлението

Това е в основата на това, че целият отговор да има абсолютно нищо общо с (функция ()) (param1, param2). - т.е. въпросът титла?

И всички примери по никакъв начин не са свързани с въпроса за титлата?

Следващият път, когато се критикува някой:

1) На първо място, направете списък с конкретни и ясни "недоразумения".

2) Не забравяйте да се съберат конкретни доказателства за тях.

и напред - дясно "в лицето", както се казва.

Но не го направих. и аз бях малко учуден арогантност, безпочвени и затова ви постави -1 лично от себе си.

Ecluses потребителското @Shock. част 2

Това се нарича закриване или обвивка.

Както бе посочено по-горе, чрез използването на оригинални глобални обекти в рамките тялото на функция, voziozhnosti Закриване далеч не се ограничава само до това. Това е само една малка част от заявлението

Вие отново потвърждава, че нито чете отговорът - но докато правиш някои абсурдни заключения по отношение на всичко, което се случва отново.

Изразът / изразът "Както е посочено по-горе," - oznachachaet че нещо като този, който току-що беше описано по-конкретен пример е сравнително posleduschego обяснение / пример.

Без да навлизаме в подробности за проблема.

Това означава, че е необходимо да се започне незабавно обяснява за това как "изолирани / изолирани" променливи в примера, без да отговори на въпроса какво е това? човек, който вижда "първата дизайна време?!" като по този начин въвеждането на още по-объркващо? - IMHO

Това се нарича закриване или обвивка. точно същата като Веднага спряганата Функция Expression

Но името Веднага спряганата Функция на израза не е напълно вярно (и не винаги логично, е уместно), защото ние веднага се получи противоречие, ако ние просто зададете тази променлива.

Ето как: Var Foo = (функция ()<> ) ();

Какво е противоречието? Това е този вид Веднага спряганата Функция Expression вече Веднага спряганата. тъй като тя ще се нарича само ако изрично разговор, а не в непосредствена-независими.

Надяваме се тези примери дадоха да се разбере, че понятието "самостоятелно изпълнение" е малко подвеждащо, защото не е функция, която е самото изпълнение, въпреки че функцията се изпълнява

Всеки, който вярва, че обвивка закриване или неправилно - повторение (вече няколко пъти) - всичко това: 1) На първо място, в люлката на Google Book

Както бе посочено по-горе (от страна на потребителя @Rules отговор) чрез използване на глобални обекти в рамките на оригиналната функция на тялото, voziozhnosti Закриване далеч не се изчерпва с това. Това е само една малка част от приложението.

Всичко е направено така, че да не се претрупва с глобалното пространство име

-- това не е така. Мислех, че така също, когато започнах

Цел №1 - имитация на пространство от имена

Тъй като той ECMAScript стандарт не се осигури подкрепа за именни пространства - (от имена), Закриване ги емулира от вноса и износа на глобални променливи.

Всичко се свежда до симулирана neymspeysov изпълнение.

Лесно е да се провери на практика:

Както можете да видите, sayTest () функция ще показва различни послания (тя няма да бъде презаписан) - означава функция със същото име функционира по различен начин (забележка за C ++ програмисти: тя не се претоварва).

Цел №2 - клас Симулация

Тъй като, ECMAScript 1.7 не предоставя vozmosti класове за изпълнение "на реда", разработчиците трябва да се симулира класове по отношение на функциите, обекти.

Това е почти буквален ekvivaletno:

Това е неудобно, създавайки абсурдно зависимост (в името на променливата) и като следствие - това е просто анти-модел.

Докато в симулирана класна стая през Закриване да се обадите на функции не в зависимост от променливата, като този:

Това е полезно, разбираема и лесна за отстраняване на грешки.

Цел №3 - модификация на съществуващи променливи (такива като обекти), без отражение на настоящата световна пространство. В този пример:

Този пример е много полезно, когато пишете библиотеки, защото:

1) Позволява наследи / разшири съществуващите обекти само когато е свързан с - SRC атрибут. 2) Тъй като изпълнението ще бъде в тялото на закриване, то няма да инстинктивно за глобалното пространство - това гарантира, че няма да има случайни презаписване функции или променливи.

Когато се използва в повечето случаи, разработчиците използват обвивка да се определят нейните обекти, попадащи в библиотеката, за да пишат. Примери - Prototype.js. Jquery.js. Backbone.js.

Например, в Jquery-UI. всеки модул, сключено през Закриване / обвивка / Веднага спряганата Функция изразяване.

  • Свикнали да пишат библиотеки (връх)

Но не се злоупотреби с него, обаче. Използвайте обвивка, само за конкретна причина, ако това е необходимо, тъй като. 1) Те изискват малко повече памет (само ако те не са достатъчни) 2) Те може да е трудно да се разбере кода.

Всички дискусии бяха премахнати

Единствената пълна, точна и сбита Отговорът беше в Призракът. И е необходимо да се слуша. Една техника, която се използва в темата, наречена Веднага спряганата Функция Expression и се използва за асинхронни обратни повиквания в рамките на цикъла, за да се свържете с на правилната позиция.

ivanpopelyshev разбирам въпроса, но са довели само един пример, а не обяснява идеи

Отговор правила като цяло с. Разбира се, понякога се използва за тази функция, но това не е така:

Това се прави, за да не се замърсява глобалния обхват и локалните променливи и се срещна с копия на най-важния световен пример в JQuery.

И най-важното heavy_metal_fan отговор. който е толкова критичен към Спектър и с право. Спомних си поредни години на бурен си младост, втора година на университета, когато аз дълбоко се разбере този шибан "икономическо-математическо моделиране", но е необходимо да се напише на изпита и пишат всичко ще си дойде на шпорите.

Основният проблем с този отговор - огромно количество вода и напълно ляво информация. Това безсмислено копират част от книгата и се вижда ясно в първите два параграфа:

Това се нарича закриване или обвивка.

Както бе посочено по-горе, чрез използването на оригинални глобални обекти в рамките тялото на функция, voziozhnosti Закриване далеч не се ограничава само до това. Това е само една малка част от заявлението

Вие постепенно стигна до ключова фраза, която е правилният отговор на въпроса тема стартера - Веднага спряганата Функция изразяване. но след това, в обясненията отново изпадна в погрешното място.

Основният недостатък на този отговор не е в това, че той - неправилно в своята същност. Не, аз съм сигурен, че книгата, от която сте копирали всичко това може да бъде много добър (между другото, каква е тази книга?), Но няма отговор на въпроса в темата, която даде, например, Спектър.