一等函数与Applicative编程
一等函数与Applicative编程
函数是一等公民
// 函数与数字一样可以存储为变量
let foo = function(params) {
doSomething();
}
// 函数与数字一样可以存储为数组的一个元素
let arr = [ 0, 1, foo ];
// 函数与数字一样可以作为对象的成员变量
let obj = {
name: "test",
age: 19,
foo
};
// 函数与数字一样可以在使用时直接创建出来
let res = 1 + (function() { return 2; })(); // 3
// 函数与数字一样可以被传递给另一个函数
function weirdAdd(n, f) { return n + f(); }
weirdAdd(123, () => 110); // 233
// 函数与数字一样可以被另一个函数返回
return 0;
return function() { return -1; };
/*
高阶函数
以一个函数作为参数
返回一个函数作为结果
*/