anonymous function / function literal / lambda abstraction / lambda express
以上 4 个词是一个意思,即:匿名函数,也称为,函数字面量、lambda 表达式、lambda 抽象。
匿名函数起源于 lambda calculus(这个比较复杂,涉及数学,暂不研究),据说其中所有的函数都是匿名的。
在一些语言中,使用 lambda 作为声明匿名函数关键字。
用处:
作为高阶函数的输入(参数)与输出(返回值)。
声明只使用一次的函数。
声明一些短期使用的函数。
作为事件处理的 handler。
大量应用于函数式编程。
好处:
源代码更精简,更轻量,更易读。
关联:
闭包的实现
currying
高阶函数
等
JavaScript 中的箭头函数,就是对 lembda 表达式良好的支持,如:
var anon = (a, b) => a + b;
[1,2,3,4].filter(value => value % 2 === 0);
注意:箭头函数不支持自己的 this,它的逻辑体中的 this 指向 the enclosing lexically scope。
参考:
https://en.wikipedia.org/wiki/Anonymous_function
https://www.vinta.com.br/blog/2015/javascript-lambda-and-arrow-functions/