【发布时间】:2019-05-02 05:45:37
【问题描述】:
我注意到当我想写一个胖箭头函数“=>”时,我可以做_=>, ()=>
或(_)=> 和我的代码功能相同(至少对于我的用例而言)
它们之间有实际区别吗?如果有,我应该使用哪一个?我大部分时间都在使用()=>,但后来有一天我看到有人使用_=> 的代码,我觉得它看起来很酷,所以我也开始使用它。
我看到这篇中型文章https://medium.freecodecamp.org/when-and-why-you-should-use-es6-arrow-functions-and-when-you-shouldnt-3d851d7f0b26,作者声明您可以使用_=> 或()=>,但没有说明是否有区别。
【问题讨论】:
-
下划线是一个有效的标识符,如果存在,可以绑定到一个参数。
-
Is there an actual difference between them- 简短的回答是肯定的,第一个指定没有函数参数,其他指定一个 -
值得注意的是,您可以使用
_=>而不是()=>,因为无论函数有多少参数,都可以使用任意数量的参数调用 JavaScript 函数。这允许您在不传递参数(例如foo())的情况下调用具有单个参数(_=>)的函数。许多(大多数?)语言不允许这样做。 -
如果您在项目中使用 lodash / 下划线,
_ => {}可能会成为一个问题。该库将无法在箭头函数主体中访问,因为参数正在遮蔽它。 -
如果您有一个参数,您可以不使用括号使用它,否则如果您有 0 个参数或 2 个或更多参数,您需要使用括号。这里你只有一个参数,即'_'所以括号不是强制性的。