js立即執行函數

立即執行函數常用於第三方庫,好處在於隔離作用域,任何一個第三方庫都會存在大量的變量和函數,爲了避免變量污染(命名衝突),開發者們想到的解決辦法就是使用立即執行函數。

什麼是立即執行函數(IIFE)
在瞭解立即執行函數之前先明確一下函數聲明、函數表達式及匿名函數的形式,如下圖:
在這裏插入圖片描述

接下來看立即執行函數的兩種常見形式:( function(){…} )()和( function (){…} () ),一個是一個匿名函數包裹在一個括號運算符中,後面再跟一個小括號,另一個是一個匿名函數後面跟一個小括號,然後整個包裹在一個括號運算符中,這兩種寫法是等價的。要想立即執行函數能做到立即執行,要注意兩點,一是函數體後面要有小括號(),二是函數體必須是函數表達式而不能是函數聲明。先看下圖:
在這裏插入圖片描述
從圖中可以看出,除了使用()運算符之外,!,+,-,=等運算符都能起到立即執行的作用。這些運算符的作用就是將匿名函數或函數聲明轉換爲函數表達式,如下圖所示,函數體是函數聲明的形式,使用運算符將其轉換爲函數表達式之後就可達到立即執行效果:
在這裏插入圖片描述

使用立即執行函數的好處:
通過定義一個匿名函數,創建了一個新的函數作用域,相等於創建了一個私有的命名空間。該命名空間的變量和方法,不會破壞污染全局的命名空間。此時,若想訪問全局對象,將全局對象以參數形式傳進去即可,如jQuery代碼結構:
在這裏插入圖片描述
其中window即是全局對象。作用域隔離非常重要,是一個JS框架必須支持的功能,jQuery被應用在成千上萬的JavaScript程序中,必須確保jQuery創建的變量不能和導入他的程序所使用的變量發生衝突。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章