文章博客

技术团队文档示例


【函数】函数柯里化

<h4>函数柯里化</h4> <hr /> <p>纯正的函数式编程中,所有的函数都只有一个参数。 这样再js中就会写成这样getId('id')(data)。我们必须写下两个括号, 这是由于js本身的语法决定的,对于scala,haskell等函数式语言,不存在这样的事情。 因此我们通常使用一些函数式编程库帮我们简化成getId('id', data)的写法。 当然这并不以为着getId就不柯里化了。这只是一个语法糖而已。</p> <h5>getId('id')(data) || getId('id', data) 像这样两者都可以执行</h5> <pre><code>function curry(fn) { return function inner(...args) { if(args.length &lt; fn.length) { return function(...innerArgs) { return inner.apply(this, args.concat(innerArgs)) } } console.log('aa') return fn.apply(this, args) } } function add(a,b){ return a+b } var curryAdd = curry(add); console.log(curryAdd) var a = curryAdd(1)(2) var b =curryAdd(1,2) console.log(b) console.log(a)</code></pre>

页面列表

ITEM_HTML