2016-09-15 54 views
-1

因此,在ES6中,我们有箭头功能 - 在维护this上下文旁边 - 提高可读性。在JavaScript中使用箭头函数是否被认为是很好的做法?

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

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

我个人的2美分,这一点:

  • 从可读性和可维护性的观点来看,我想一般用箭头功能从我考虑使用箭头技术和上下文视图中看到
  • 函数应该是一个例外而不是规范,因为它可能会导致不需要的行为。例如:改变箭头功能的上下文是毫无意义的:(()=>{}).apply(window)将完全没有影响。这就是说:需要特定背景的图书馆可能很容易被箭头函数带到跪地。

这只是我的想法的一小部分。每当我使用箭头函数时,我都会有这种偏执狂,因为我觉得当你不需要停留在这种背景下时,这是一件错误的事情。

+4

我认为你应该在适当的时候使用它们,而不适用时不要使用它们。 – vlaz

+1

@vlaz你是一位有远见的人。 – joh04667

+0

@vlaz:这是一个非常详细的答案。谢谢。 – androidavid

回答

0

正如你所说,箭头函数在词汇上绑定了this。它还提供了一些语法糖。这使得它在少数情况下伟大的,就像使用一个方法调用,需要一个函数作为参数(.map().filter()等)

至于标准走,有没有。肯定有地方你做而不是想要使用箭头函数,就像定义一个方法时一样,但是在大多数情况下,你只想随你的团队一起使用 - 你可能会认为它看起来更加语义和可读性,但你的团队可能不会。

对于前端Web开发,箭头函数并不像您想象的那么常见,除非您在其上维护Babel。对于Node开发,我希望看到更多的箭头,但大多数情况下它们都是一个利基项目,在大多数情况下,仅使用function()并不能真正为客户带来任何好处。

-1

根据我的理解,使用转译程序时性能差别很小,因为它会将其解析为ES5,因此即使您不需要上下文绑定,也不会损害其一致性。

从本质上讲,我听说在某些浏览器中有轻微的性能下降,但是当ES6/7在浏览器中完全实现并优化后,可能会消失。

考虑到简洁和清晰的优点,我不认为一旦得到完全支持就不会使用它们。

-1

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

箭头不能是构造函数。

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

+0

看起来像一些不错的专家,只是在这个问题上爆炸负面。保持良好的工作,永远不要让自己保持。 – estus

相关问题