wrap-iife
要求立即呼叫 function
時加上括號
🔧 可修正
此規則回報的某些問題可以使用 --fix
命令列選項自動修正
此規則已在 ESLint v8.53.0 中被棄用。請使用 @stylistic/eslint-plugin-js
中的 對應規則。
您可以立即呼叫函式表示式,但不能立即呼叫函式宣告。建立立即呼叫函式表示式 (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"
選項的錯誤程式碼範例
在遊樂場開啟
/*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"
選項的錯誤程式碼範例
在遊樂場開啟
/*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"
選項的錯誤程式碼範例
在遊樂場開啟
/*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 中引入。