关键字函数在以下代码中是必需的:

keyword function is necessary in the following codes:

本文关键字:代码 函数 关键字      更新时间:2023-09-26

我的主干视图:

module.exports = Backbone.View.extend({
  tagName: 'div',
  events: {
    'click #saveReportBtn': '_handleSaveReport',
    'click #saveQuery': '_handleSaveQuery',
    'keydown #queryToolbar': '_enter',
  },
  _enter( event ) {
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
  },
...

一些人建议使用:

  _enter: function ( event ) {
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
  },

但它似乎在没有函数关键字的情况下工作,我的esint抱怨道:

src/myfile.js
  100:11  warning  Missing function expression name  func-names
✖ 1 problem (0 errors, 1 warning)

有什么遗漏吗?感谢

您使用的简写:

_enter( event ) {
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
  }

是ES2015(ES6)的简写,这就是为什么esint没有抱怨的原因。看见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions

具体而言:

注意:简写语法使用命名函数而不是匿名函数(如…foo:function(){}…)。

尝试在分配中添加函数名。(http://eslint.org/docs/rules/func-names)

 _enter: function _enter( event ) {
    console.log('event target:', + event.target.name + ', ' + event.currentTarget.name); // eslint-disable-line no-console
  }

拥有命名函数,而不是浮动的匿名函数,确实有助于调试过程和更明确的堆栈跟踪