Това означава, че 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 Закриване далеч не се ограничава само до това. Това е само една малка част от заявлението
Вие постепенно стигна до ключова фраза, която е правилният отговор на въпроса тема стартера - Веднага спряганата Функция изразяване. но след това, в обясненията отново изпадна в погрешното място.
Основният недостатък на този отговор не е в това, че той - неправилно в своята същност. Не, аз съм сигурен, че книгата, от която сте копирали всичко това може да бъде много добър (между другото, каква е тази книга?), Но няма отговор на въпроса в темата, която даде, например, Спектър.