首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

wrap-iife

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

您可以立即调用函数表达式,但不能调用函数声明。创建立即调用的函数表达式(IIFE)的常用技术是将函数声明包装在圆括号中。开头的圆括号使包含的函数被解析为一个表达式,而不是一个声明。

代码语言:javascript
复制
// 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被引用 。

扫码关注腾讯云开发者

领取腾讯云代金券