wrap-iife
在--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 = 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 expressioninside
内部错误代码的示例"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 expressionany
不正确代码的"any"
示例:/ * eslint wrap-iife:[“error”,“any”] * / var x = function(){return {y:1};}(); //展开正确代码的示例"any"
选项:/*eslint wrap-iife: ["error", "any"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
var x = (function () { return { y: 1 };})(); // wrapped function
expressionfunctionPrototypeMethods
这个规则的错误代码"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 0.0被引用 。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com