什么是柯里化
柯里化可以说是一种函数式编程的过程,其主要目的就是把多个参数的函数转换成一个只接受一个单一参数的函数。被柯里化的函数会返回一个新的函数并接受新的一个参数
在所有的参数用完之后,它才会去执行得到最后的结果
实现柯里化
一个常见又简单的例子
1 | function add(a, b, c) { |
通过闭包的形式把新的函数 return 出来,这种方式一看就懂,但是如果一开始不知道参数数量就没法这么写了,所以我们可以改写成这样
1 | function curry(func) { |
解释一下这个函数,argments 中保存着函数的参数,.length 方法可以获取到参数个数,当还有剩余参数的时候,就把参数合并,返回新函数,如果参数填入完整就调用。
一个更加简洁的版本
1 | const curry = fn => { |
作用
这是一个计算商品价格的函数
1 | function discount(price, discount) { |
其实折扣力度都一样,变化的只是原价格,我们利用 curry 改写一下
1 | fucntion price(discount){ |
这下我们只用输入价格就 ok 了