## JS函数柯里化 * **柯里化(Currying),维基百科上的解释是,把接受多个参数的函数转换成接受一个单一参数的函数** - 最简单的demo ``` // 柯里化 const foo = function(x) { return (y) { return x + y } } foo(3)(4) // 7 // 普通方法 var add = function(x, y) { return x + y; } add(3, 4) // 7 ``` * 参考文章: - https://muyiy.cn/blog/6/6.2.html#%E6%9F%AF%E9%87%8C%E5%8C%96 - https://github.com/mqyqingfeng/Blog/issues/42 * 使用场景:https://segmentfault.com/a/1190000015281061 - **使用场景之一:减少重复传递不变的部分参数** ``` // 使用lodash.curry库函数使函数柯里化 function simpleURL(path) { return "http://mysite/" + path; } // 避免每次调用重复传参 let myURL1 = _.curry(simpleURL)('https', 'mysite'); let res1 = myURL1('home.html'); ``` - **将柯里化后的callback参数传递给map, filter等函数,重复利用。** > ![](https://img.kancloud.cn/0e/e0/0ee0dd6fc8228c3f83f8c0e4f321f0b0_628x282.png)