高阶函数、柯里化、yield、惰性计算(惰性加载、惰性求值)

1,085 阅读1分钟

中心思想

function first,data last

定义

高阶函数就是函数中可以传入另一个函数作为参数的函数。

高阶函数
高阶函数
较流行的JS中的工具库有underscore,loadash,ramdajs。 其中在es6的Generator 函数(yield)Generator异步应用、loadash的对计算性能的调优及ramdajs的所有方法都支持柯里化这些设计

通过代码理解

es6 yield

function *foo(){
  yield 1;
  yield 2;
  yield 3;
  return;
}
for(let v of foo()){
  console.log(v);
}
// 1
// 2
// 3

loadsh

var wallet = _(assets).filter(ownedBy('me'))
                      .pluck('value')
                      .reduce(sum);

$json.get("/new/assets").success(function(data) {
    assets.push.apply(assets, data); // 更新我的资金
    wallet.value(); // 返回我钱包的最新的总额
});

ramdajs

var add= R.curry((x,y)=>x+y)
add(4,2) //6
add(4)(2) //6
var add4=add(4) //ƒ (t){return n.apply(this,arguments)}
add4(2) //6
add() // ƒ (t,r){return n.apply(this,arguments)}

参考:
知乎-高阶函数是个什么?
阮一峰-Ramda 函数库参考教程
justjavac(迷渡)-如何百倍加速 Lo-Dash?引入惰性计算程
阮一峰-ECMAScript 6 入门