2016-07-06 140 views
4

我有与ESLintESLint喜欢箭头回调错误

这里的一个问题是我的函数:

$productItem.filter(function (i, el) { 
     return el.getBoundingClientRect().top < evt.clientY 
    }).last() 
    .after($productItemFull) 

,这里是什么ESLint告诉我:

warning Missing function expression name func-names 
error Unexpected function expression prefer-arrow-callback 

如何解决这个错误?

回答

5

它基本上说在filter回调函数中使用Arrow function语法。

$productItem.filter((i, el) => el.getBoundingClientRect().top < evt.clientY) 
    //    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
    .last() 
    .after($productItemFull); 

这里是ESLINT documentation for prefer-arrow-callback

箭头功能适用于回调,这是因为:在箭头功能

  • this关键字绑定到上范围的。

  • 箭头函数的符号比函数表达式的符号短。

而且,在以下情况下,错误将被抛出

/*eslint prefer-arrow-callback: "error"*/ 

foo(function(a) { return a; }); 
foo(function() { return this.a; }.bind(this)); 

你的代码是一样一样的第一个片段。所以,错误prefer-arrow-callback由ESLint显示。

为了解决错误,可以

  1. 使用Arrow function语法(如上所示)
  2. 通过使用options抑制该错误并命名函数

    /*eslint prefer-arrow-callback: ["error", { "allowNamedFunctions": true }]*/ 
    
    foo(function bar() {}); 
    
0

解决“意外的功能表达。(prefer-allow-callback)“eslint中的错误在您的代码的开头写入此代码:

/*eslint prefer-arrow-callback: 0*/