我的骨干观点:
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)
有什么遗漏? 感谢
答案 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
}
命名函数,而不是浮动的匿名函数确实有助于调试过程和更明确的堆栈跟踪