在JavaScript中使用箭头函数是否被视为良好做法?

时间:2016-09-15 19:37:10

标签: javascript ecmascript-6 arrow-functions

因此,对于ES6,我们有箭头函数 - 除了维护this上下文之外 - 在我看来增加了可读性。

常见样本: [...].map(item => item.attr)[...].reduce((a,b) => {...} )

所以我问自己:使用这些箭头函数代替function(){...}是否是一种好习惯。因为这就是你现在所看到的。

我个人2美分:

  • 从可读性和可维护性的角度来看,我通常使用箭头功能
  • 从技术和上下文的角度来看,我认为使用箭头函数应该是一个例外而不是常态,因为它可能导致不必要的行为。例如:改变箭头函数的上下文是没有意义的:(()=>{}).apply(window)绝对没有效果。这就是说:需要特定背景的图书馆可以通过箭头功能轻松地瘫痪。

这只是我想法的一小部分。每次我使用箭头功能时都会有这种偏执,因为当你不需要留在那个环境中时,我觉得做错了。

3 个答案:

答案 0 :(得分:0)

正如你所说,

箭头函数在词法上绑定this。它还提供了一些语法糖。这在某些情况下很有用,例如在方法调用中使用函数作为参数(.map().filter()等。)

就标准而言,没有。肯定有一些地方你想要使用箭头功能,比如在定义一个方法时,但在大多数情况下你只想用你的团队使用的任何东西 - 你可能认为它看起来像更具语义性和可读性,但您的团队可能不会。

对于前端Web开发,箭头功能并不像您想象的那么常见,除非您将Babel保持在它之上。对于Node开发,我希望看到更多的箭头,但是大多数情况下它们都是一个小众项目,在大多数情况下,只使用function()并没有真正提供任何客观的好处。

答案 1 :(得分:-1)

据我所知,使用转换器时性能差异很小,因为它将其解析为ES5,所以即使你不需要上下文绑定,也不会有一致性。

在本地,我听说在某些浏览器中有轻微的性能损失,但是当ES6 / 7在浏览器中完全实现和优化时,可能会消失。

考虑到简洁性和清晰度方面的优点,我认为一旦完全支持它们就没有理由不使用它们。

答案 2 :(得分:-1)

了解当前箭头功能的上下文是一个好习惯。

箭头不能是构造函数。

非词汇this是经常被滥用的东西,在ES6开发中很少是一个好主意。如果正在为jQuery编写ES6代码,如果this有问题,则应该将一个字符串绑在他/她的手指上。