• lugusliu
    2022-11-16 来自北京
    柯里化每次传一个参数这样写是不是更简洁 function partial(fn){ let receivedArgs = [] return function recursionFn(args){ receivedArgs = receivedArgs.concat([...arguments]) if(receivedArgs.length >= fn.length){ return fn(...receivedArgs) }else{ return recursionFn } } }

    作者回复: 很简洁👍

    
    3
  • L
    2022-09-28 来自北京
    function getCurrentOrder(cb) { getCurrentOrder( { order: CURRENT_ORDER_ID }, cb ); (fetchOrder) } 可是如果我们想进一步具象化,预制一些参数怎么办?比如下面的 getCurrentOrder,如果我们想把前面 getOrder (fetchOrder) 里的 data,也内置成 order: CURRENT_ORDER_ID,这样会大量增加代码结构的复杂性。 这两个地方是不是错了 应该都是fetchOrder

    作者回复: 是的,谢谢你的细心,这里有个勘误,getOrder应该都统一成fetchOrder。

    
    3
  • L
    2022-09-28 来自北京
    var curriedOrderEvntHandler = curry( orderEventHandler ); var fetchOrder = curriedHttpEvntHandler( "http://some.api/order" ); var getCurrentOrder = getOrder( { order: CURRENT_ORDER_ID } ); getCurrentOrder( function editOrder(order){ /* .. */ } ); 这里是否也有问题 为什么前后的函数对不上呢

    作者回复: 是的,谢谢你的细心,这里有个勘误,getOrder应该都统一成fetchOrder。

    
    2
  • 行云流水
    2022-11-17 来自海南
    老师,我想了解下,知道这些概念,怎么实际应用呢?毕竟我们也是js进阶实战课程。

    作者回复: 柯里化和部分应用最大的应用场景就是当一次只传入一个或部分参数的时候。

    
    1
  • Sunny
    2022-09-29 来自北京
    看下这个单词 tenary 是否少了一个 "r",正确的是 ternary?

    作者回复: 谢谢指正,我查了一下,你的拼写是正确的

    
    1
  • Saul
    2022-09-27 来自北京
    var curriedOrderEvntHandler = curry( orderEventHandler ); var fetchOrder = curriedHttpEvntHandler( "http://some.api/order" ); var getCurrentOrder = getOrder( { order: CURRENT_ORDER_ID } ); getCurrentOrder( function editOrder(order){ /* .. */ } ); -------------------------------------------------------------------------- 第二行我怎么看不懂

    作者回复: 原先的orderEventHandler函数有3个参数,url, data 和 callback。 function orderEventHandler(url,data,callback) {} 第一行把orderEventHandler做了柯里化,之后可以每次只传一个参数。 第二行是在柯里化后的curriedHttpEvntHandler中传入了第一个url实参。

    
    1
  • 海是蓝天的倒影
    2022-12-18 来自海南
    要多看几遍才能理解

    作者回复: 有些概念确实需要反复思考来理解

    
    
  • Geek_fcdf7b
    2022-10-16 来自北京
    function constant(v) { return function value(){ return v; }; } 这个函数为啥不直接返回v,而要在里面还要多包一层呢。为啥不是像这样: function constant(v) { return v; }

    作者回复: 因为嵌套封装可以减少来自外部值的副作用。

    共 4 条评论
    
  • Guit
    2022-09-29 来自北京
    const currying = (fn) => { const l = fn.length return function curried(...prevArgs) { if (l === prevArgs.length) { return fn(...prevArgs) } return (...nextArg) => curried(...nextArg, ...prevArgs) } }
    
    2
  • Long
    2023-07-31 来自日本
    var words = " hello world ".split( /\s|\b/ ); console.log(words.filter( (v) => {return v} )) filter函数里面可以写个函数,是不是可以这样理解,这个函数就是用到了柯里化的概念?
    
    