何时在ECMAScript 6中使用Arrow函数?
这个问题是针对那些在即将推出的ECMAScript 6(和谐)背景下思考过代码风格的人,他们已经使用过该语言。
带着() => {}
和function () {}
我们得到了两种在ES6中编写函数的非常相似的方法。在其他语言中,lambda函数通常是匿名的,但在ECMAScript中,任何函数都可以是匿名的。这两种类型中的每一种都有唯一的使用域(即this
需要显式绑定或显式不绑定)。在这些域之间有大量的例子,其中任何一种符号都可以。
ES6中的箭头函数至少有两个限制:
- 不要和我一起工作
new
- 固定
this
绑定到初始化时的作用域
撇开这两个限制不谈,箭头函数理论上几乎可以代替常规函数。在实践中使用它们的正确方法是什么?如果使用箭头函数,例如:
- “无处不在”,也就是说,任何地方的函数都不一定是不可知的。
this
变量,而不是创建对象。 - 只有“需要它们的任何地方”,即需要绑定到特定范围的事件侦听器、超时。
- 使用“短”函数,而不是“长”函数
- 仅适用于不包含其他箭头函数的函数。
我正在寻找的是在ECMAScript的未来版本中选择适当的函数符号的指南。指南需要明确,这样才能向团队中的开发人员传授它,并且要保持一致,这样它就不需要不断地从一个函数符号重构到另一个函数表示法。