1. =>
适用时机规则(《你不知道的JavaScript(下卷)》P107)
- 如果你有一个简短单句在线函数表达式,其中唯一的语句是
return
某个计算出的值,且这个函数内部没有this
引用,且没用自身引用(递归、事件绑定/解绑定),且不会要求函数执行这些,那么可以安全地把它重构为箭头函数。 - 如果你有一个内层函数表达式,依赖于在包含它的函数中调用
var self = this
hack或者.bind(this)
来确定适当的this
绑定,那么这个内层函数表达式应该可以安全地转换为=>
箭头函数。 - 如果你的内层函数表达式依赖于封装函数中某种像
var args = Array.prototype.slice.call(arguments)
来保证arguments
的词法复制,那么这个内层函数应该可以安全地转换为 => 箭头函数。 - 所有的其他情况——函数声明、较长的多语句函数表达式、需要词法名称标识符(递归等)的函数,以及任何不符合以上几点特征的函数——一般都应该避免
=>
函数语法。