关键字功能在以下代码中是必需的:

时间:2016-04-29 17:30:41

标签: javascript backbone.js

我的骨干观点:

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
  },

但它似乎没有函数关键字,我的eslint抱怨:

src/myfile.js
  100:11  warning  Missing function expression name  func-names

✖ 1 problem (0 errors, 1 warning)

有什么遗漏? 感谢

1 个答案:

答案 0 :(得分:0)

您正在使用的简写:

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

是ES2015(ES6)的简写,这就是为什么eslint不会抱怨的原因。见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
  }

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