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 = ; // 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 中引入。