2016-07-06 76 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*/