版本

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

預設 "outside" 選項的 錯誤 程式碼範例

在遊樂場中開啟
/*eslint wrap-iife: ["error", "outside"]*/

var x = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };})(); // 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 = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };}()); // 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 = function () { return { y: 1 };}(); // 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 = function(){ foo(); }()
var x = (function(){ foo(); }())
var x = function(){ foo(); }.call(bar)
var x = (function(){ foo(); }.call(bar))

此規則搭配 "inside", { "functionPrototypeMethods": true } 選項的 正確 程式碼範例

在遊樂場中開啟
/* eslint wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */

var x = (function(){ foo(); })()
var x = (function(){ foo(); }).call(bar)

版本

此規則在 ESLint v0.0.9 中引入。

資源

更改語言