wrap-iife
要求在立即 function
呼叫周圍加上括號
🔧 可自動修正
此規則報告的某些問題可以透過 --fix
命令列 選項自動修正
您可以立即調用函式表達式,但不能調用函式宣告。建立立即調用函式表達式 (IIFE) 的常見技巧是用括號包住函式宣告。開頭的括號會使包含的函式被解析為表達式,而不是宣告。
// function expression could be unwrapped
var x = function () { return { y: 1 };}();
// function declaration must be wrapped
function () { /* side effects */ }(); // SyntaxError
規則詳情
此規則要求所有立即調用函式表達式都必須用括號包住。
選項
此規則有兩個選項,一個字串選項和一個物件選項。
字串選項
"outside"
強制始終包住 *呼叫* 表達式。預設值為"outside"
。"inside"
強制始終包住 *函式* 表達式。"any"
強制始終包住,但允許任一種風格。
物件選項
"functionPrototypeMethods": true
額外強制包住使用.call
和.apply
調用的函式表達式。預設值為false
。
outside
預設 "outside"
選項的 錯誤 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "outside"]*/
var x = ; // unwrapped
var x = ; // wrapped function expression
預設 "outside"
選項的 正確 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "outside"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
inside
"inside"
選項的 錯誤 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "inside"]*/
var x = ; // unwrapped
var x = (); // wrapped call expression
"inside"
選項的 正確 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "inside"]*/
var x = (function () { return { y: 1 };})(); // wrapped function expression
any
"any"
選項的 錯誤 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "any"]*/
var x = ; // unwrapped
"any"
選項的 正確 程式碼範例
在遊樂場中開啟
/*eslint wrap-iife: ["error", "any"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
var x = (function () { return { y: 1 };})(); // wrapped function expression
functionPrototypeMethods
此規則搭配 "inside", { "functionPrototypeMethods": true }
選項的 錯誤 程式碼範例
在遊樂場中開啟
/* eslint wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x =
var x = ()
var x =
var x = ()
此規則搭配 "inside", { "functionPrototypeMethods": true }
選項的 正確 程式碼範例
在遊樂場中開啟
/* eslint wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x = (function(){ foo(); })()
var x = (function(){ foo(); }).call(bar)
版本
此規則在 ESLint v0.0.9 中引入。