大家好雨席,我是IT修真院萌新分院的王寒,一枚正直吠式,純潔陡厘,善良的前端程序員。
1.背景介紹
在詳細講解自執(zhí)行函數(shù)之前特占,我們先來說一下這個函數(shù)在叫法上的爭議糙置。實際上不同的人對自執(zhí)行函數(shù)的理解不太一樣,第一種理解是是目,自執(zhí)行即自動執(zhí)行罢低,也就是大家平時所謂的立即執(zhí)行函數(shù)還有一種理解,即自執(zhí)行函數(shù)是在函數(shù)內(nèi)部執(zhí)行函數(shù)本身,即我們平時常說的遞歸函數(shù)网持。不管是哪種理解宜岛,我們都沒必要去糾結叫法上的準確與否,因為相比于自執(zhí)行函數(shù)功舀,立即執(zhí)行函數(shù)和遞歸函數(shù)這兩種叫法是我們更加熟悉的萍倡,實際上平時也很少會看到自執(zhí)行函數(shù)這種叫法。立即執(zhí)行函數(shù)和遞歸函數(shù)都很重要辟汰,因此今天打算對立即執(zhí)行函數(shù)做一下簡單的介紹列敲。
2.知識剖析
知識點1:直接在函數(shù)后面加()就可以立即執(zhí)行嗎在函數(shù)聲明后面加括號為什么會報錯?
知識點2:如何實現(xiàn)立即執(zhí)行函數(shù)
3.常見問題
對函數(shù)聲明和函數(shù)表達式不能正確區(qū)分
4.解決方案
函數(shù)聲明:函數(shù)fnName(){...};使函數(shù)關鍵字聲明一個函數(shù)帖汞,再指定一個函數(shù)名戴而,叫函數(shù)聲明。
函數(shù)表達式VAR fnName =函數(shù)(){...};使用函數(shù)關鍵字聲明一個函數(shù)翩蘸,但未給函數(shù)命名所意,最后將匿名函數(shù)賦予一個變量,叫函數(shù)表達式催首,這是最常見的函數(shù)表達式語法形式扶踊。
函數(shù)聲明和函數(shù)表達式不同之處在于,一郎任,Javascript引擎在解析javascript代碼時會'函數(shù)聲明提升'(Function declaration Hoisting)當前執(zhí)行環(huán)境(作用域)上的函數(shù)聲明秧耗,而函數(shù)表達式必須等到Javascirtp引擎執(zhí)行到它所在的時間,才會從上而下一行一行地解析函數(shù)表達式舶治,二分井,函數(shù)表達式后面可以加括號立即調(diào)用該函數(shù),函數(shù)聲明不可以霉猛,只能以fnName()形式調(diào)用杂抽。
5.編碼實戰(zhàn)
6.擴展思考
立即執(zhí)行函數(shù)有哪些用處?
7.參考文獻
8.更多討論
匿名函數(shù)和閉包的區(qū)別
小課堂問題:
鳴謝
感謝大家觀看
王寒
小課堂問題:
1.jquery的自執(zhí)行函數(shù)怎么寫?
答案:請點擊韩脏。
2.自執(zhí)行函數(shù)跟閉包和匿名函數(shù)的關系?
答案:請點擊。
3.自執(zhí)行函數(shù)有哪些用處铸磅?
答案:請點擊赡矢。