self invoke function

from : javascript + function () {}(); 解析

self invoke function

(function () {
  console.log('gordon');
})(); 
// gordon

上面這段 code,宣告完就自己呼叫自己。 這種方式稱作「Iffy」(IIFE - immediately invoked function expression) 是一個匿名函式表達式,而且可以立即被調用。


一個匿名 function 這樣定義:

function () { 
  console.log('hihi');
};

一般要執行一個有名稱的 function, 直接在 function 名稱後加上置入參數的 "( )",ex:

// 定義
var sayHi = function () { 
  console.log('hihi');
}
// 執行
sayHi() 
// hihi

但執行匿名 function,直接加上 "( )" 會壞掉!

// 這樣
function (){
  console.log("hihi")
}
// 或這樣
function (){
  console.log("hihi")
}()
// "error"
// "SyntaxError: Unexpected token (...

說明:

javascript 直譯器 (or v8 engine) 在沒有任何符號的情況下讀到 function 這個關鍵字, 會先認為是 declaration (宣告),後面又讀到 () 會無法辨認。 因此在 function 前面放上 (, +, -, !, ~, 會讓 javascript 引擎知道後面是 statement (聲明,即表達式或一些非表達式的陳述語句)

// 用 "()" 把 function 表達式包住
(function (){
console.log("bbb")
})()
// bbb

// 或連代表直接呼叫的 "()" 也一起包住
(function (){
console.log("bbb")
}())
// bbb

// 放 "+" 在 function 前面
+function (){
  console.log("bbb")
}() 
// bbb

results for ""

    No results matching ""