使用胖箭头(放屁)语法定义函数时,vim中的JSlint错误

Posted

技术标签:

【中文标题】使用胖箭头(放屁)语法定义函数时,vim中的JSlint错误【英文标题】:JSlint error in vim while defining functions using fat arrow (fart) syntax 【发布时间】:2017-07-25 15:21:54 【问题描述】:

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

()=>


jslint 在 vi​​m 中与syntastic 显示相同的错误,并希望以格式定义

function()


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

【问题讨论】:

不要对 jsLint 等工具的 意见 投入太多。更重要的是了解不同语法之间的差异并以您知道的最佳方式使用它们。 @squint 主要问题是我需要以某种方式抑制警告。 syntastic 占用了我的很多屏幕尺寸并出现错误,并且我有一个巨大的代码库,我使用了第一种方法。不能到处换到第二... 也许使用更好、更可配置的 linter,比如 ESLint。 【参考方案1】:

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

let es7 = () => Object.hasOwnProperty("getOwnPropertyDescriptors");
es7();

因为它也不鼓励在函数体内使用this,并且不能命名箭头函数。

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

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

Farts 在改变 'this' 和 'arguments' 的含义时出错了,但 JSLint 不鼓励使用 'this' 和 'arguments',所以没关系。

另外,花括号可能是不明确的:

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

  let bar = () => (); // wrap the object literal in parens

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

此外,在全局范围内定义的箭头函数,作为对象字面量的值,或作为函数原型的方法,使用***宿主对象(windowglobal)作为上下文,而不是父函数和其他情况一样。

参考文献

What is the meaning of this? | YUI Blog

ES6 fat arrow functions, aka farts

Constant confusion: why I still use javascript function statements

An Introduction to JavaScript ES6 Arrow Functions - StrongLoop

When 'not' to use arrow functions

【讨论】:

以上是关于使用胖箭头(放屁)语法定义函数时,vim中的JSlint错误的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript ES6箭头函数指南

如何在 CoffeeScript 胖箭头回调中引用实际的“this”?

如果在胖箭头函数内

如何使用咖啡脚本使用`this`和`_this`(胖箭头)?

向胖箭头函数添加花括号会破坏它[重复]

除了语法,普通函数和箭头函数有啥区别吗? [复制]