因此,对于ES6,我们有箭头函数 - 除了维护this
上下文之外 - 在我看来增加了可读性。
常见样本:
[...].map(item => item.attr)
或[...].reduce((a,b) => {...} )
。
所以我问自己:使用这些箭头函数代替function(){...}
是否是一种好习惯。因为这就是你现在所看到的。
我个人2美分:
(()=>{}).apply(window)
绝对没有效果。这就是说:需要特定背景的图书馆可以通过箭头功能轻松地瘫痪。这只是我想法的一小部分。每次我使用箭头功能时都会有这种偏执,因为当你不需要留在那个环境中时,我觉得做错了。
答案 0 :(得分:0)
箭头函数在词法上绑定this
。它还提供了一些语法糖。这在某些情况下很有用,例如在方法调用中使用函数作为参数(.map()
,.filter()
等。)
就标准而言,没有。肯定有一些地方你不想要使用箭头功能,比如在定义一个方法时,但在大多数情况下你只想用你的团队使用的任何东西 - 你可能认为它看起来像更具语义性和可读性,但您的团队可能不会。
对于前端Web开发,箭头功能并不像您想象的那么常见,除非您将Babel保持在它之上。对于Node开发,我希望看到更多的箭头,但是大多数情况下它们都是一个小众项目,在大多数情况下,只使用function()
并没有真正提供任何客观的好处。
答案 1 :(得分:-1)
据我所知,使用转换器时性能差异很小,因为它将其解析为ES5,所以即使你不需要上下文绑定,也不会有一致性。
在本地,我听说在某些浏览器中有轻微的性能损失,但是当ES6 / 7在浏览器中完全实现和优化时,可能会消失。
考虑到简洁性和清晰度方面的优点,我认为一旦完全支持它们就没有理由不使用它们。
答案 2 :(得分:-1)
了解当前箭头功能的上下文是一个好习惯。
箭头不能是构造函数。
非词汇this
是经常被滥用的东西,在ES6开发中很少是一个好主意。如果正在为jQuery编写ES6代码,如果this
有问题,则应该将一个字符串绑在他/她的手指上。