立即呼叫函式(IIFE

2022-06-08 15:42:11 字數 1039 閱讀 2180

定義:

iife:立即呼叫的函式表示式,宣告函式的同時立即呼叫這個函式。

語法:

iife的常用寫法:這兩種寫法的作用相同,只是表現形式不同而已,()只是起了自執行的作用

(function())() 把函式當作表示式解析,然後執行解析後的函式[相當於 var a = function(){}; a(); a得到的是函式]

(function()())是把函式表示式和執行當作語句直接執行[相當於 var a = function(){}(); a得到的是結果]

傳統寫法:

宣告:function func()

呼叫:func();

iife其他寫法:

!function foo() ();

+function foo() ();

iife和傳統寫法的區別:

iife:是用乙個()把函式宣告括起來了,讓js編譯器知道,這是乙個需要立即執行的函式;

傳統:宣告函式之後,只有在呼叫的時候才會執行函式,並且直接汙染全域性命名空間。

說明:所謂不去汙染全域性命名空間,是因為 iife 建立了乙個新的函式作用域,你真正的業務**被封裝在其中,自然就不會觸碰到全域性物件了。如果你需要全域性物件,那就 pass 給 iife:

void function (global) (this)    // 在瀏覽器裡,this 就是 window 物件

為什麼要使用iife:

在js中只有function才能實現作用域的隔離,如果要將一段**中的變數、函式等的定義隔離出來,只能將這段**封裝到乙個函式中。

在我們通常的理解中,將**封裝到函式中的目的是為了復用,在js中,當然宣告函式的目的在大多數情況下也是為了復用,但是js迫於作用域控制手段的貧乏,我們也經常看到只使用一次的函式:這通常的目的是為了隔離作用域,既然只使用一次,那麼立即執行好了,既然只使用一次,函式的名字也省掉了,這就是iife的由來。

IIFE 立即執行函式表示式

原文 iife 的原理,我簡單說一下 function foo 這是定義,declaration 定義只是讓直譯器知道其存在,但是不會執行。foo 這是語句,statement 直譯器遇到語句是會執行它的。iife 並非必須,傳統一點可以這麼寫 function foo foo 那麼為什麼要 iif...

立即執行函式表示式IIFE

一 iife解釋 全拼imdiately invoked function expression,立即執行的函式表示式。像如下的 所示,就是乙個匿名立即執行函式 function window,undefined window 二 括號的意義 2.1 包住function 的括號的意義 這個括號的目...

立即執行函式

函式宣告 函式表示式 匿名函式 函式宣告 function fnname 使用function關鍵字宣告乙個函式,再指定乙個函式名,叫函式宣告。函式表示式 var fnname function 使用function關鍵字宣告乙個函式,但未給函式命名,最後將匿名函式賦予乙個變數,叫函式表示式,這是最...