Debugging 使用fat arrow(fart)语法定义函数时,vim中出现JSlint错误

Debugging 使用fat arrow(fart)语法定义函数时,vim中出现JSlint错误,debugging,vim,ecmascript-6,jslint,arrow-functions,Debugging,Vim,Ecmascript 6,Jslint,Arrow Functions,最近我养成了将函数定义为 ()=>{ } 但是vim中的jslint与syntastic一起显示错误,并希望以 function(){ } 我错过什么了吗?第一个定义是否不正确且不应使用,或者在jslint中传递了一些附加参数?jslint打算将箭头函数用于单行表达式: let es7 = () => Object.hasOwnProperty("getOwnPropertyDescriptors"); es7(); 因为它也不鼓励在函数体内部使用此,并

最近我养成了将函数定义为

()=>{

}
但是vim中的
jslint
syntastic
一起显示错误,并希望以

function(){

}

我错过什么了吗?第一个定义是否不正确且不应使用,或者在jslint中传递了一些附加参数?

jslint打算将箭头函数用于单行表达式:

let es7 = () => Object.hasOwnProperty("getOwnPropertyDescriptors");
es7();
因为它也不鼓励在函数体内部使用
,并且无法命名箭头函数

胖箭头参数在视觉上可能与表达式混淆。胖箭头函数不能合理地返回对象文字

farts的理由是,它们更适合编写只返回执行简单表达式结果的简单函数

Farts在更改“this”和“arguments”的含义时出错了,但JSLint不鼓励使用“this”和“arguments”,所以这并不重要

此外,花括号可能不明确:

如果要创建简单的factory函数,则不能将对象文字放在
=>
的右侧,因为大括号将被解释为函数体。因此,您必须使用:

幸运的是,JSLint将能够检测到这些类型的歧义

此外,在全局范围内定义为对象文本值或函数原型方法的箭头函数使用顶级宿主对象(
窗口
全局
)作为上下文,而不是在其他情况下使用父函数

参考资料


不要对jsLint这样的工具的观点过于看重。更重要的是要理解不同语法之间的差异,并以你所知道的最好的方式使用它们。@斜视主要的问题是我需要以某种方式抑制警告。syntastic占用了我大量的屏幕大小和错误,我有一个巨大的代码库,在那里我使用了第一种方法。无法在任何地方更改为秒…可能使用更好、更可配置的linter,如ESLint。
  let bar = () => ({}); // wrap the object literal in parens