求解一个js函数,看不明白

这个方法里的value和date是怎么传进去的?如果value不存在那不是永远都进不到if里面了吗

function createselectDateDoneCallback(timeline){
        return function(value,date){
            if(value.length>0){
                value = ffff(value,timeline.settings.step);
            }
            $('#timepick').val(value[0]);
            timeline.settings.slider = sliderRender(layui.slider,timeline.settings.min,timeline.settings.max,timeline.settings.step,value);
        }
    }
已解决 悬赏分:80 - 解决时间 2021-11-28 23:29
反对 0举报 0 收藏 0

回答3

最佳
  • @

    这就是方法的返回值是一个方法嘛.

    function A(t) {
        return function(b, c) {
            return t + b + c;
        }
    }
    
    A(1)(2, 3) // 输出 6

    这种东西可以叫 柯里化 (高阶函数的一种用法),有时候根据功能会叫做 延迟计算缓存计算结果(都是 柯里化 的作用之一),最朴素的说法就是:一个方法的返回值是另一个方法,且后者可以访问到前者的参数及内部变量.

    支持 0 反对 0 举报
    2021-11-28 08:34
  • @

    你先理解一下这个函数的调用方式:


    第一种方式:createselectDateDoneCallback(timeline)(value, date)


    第二种方式:

    let fn = createselectDateDoneCallback(timeline);
    fn(value, date);

    把这个理解了,你应该明白value和date是什么时候传入的

    支持 0 反对 0 举报
    2021-11-28 09:57
  • @

    简单来说

    const resultFn = createselectDateDoneCallback();
    resultFn(value, date);// 参数从这里传进来

    js语言中函数是第一公民,他可以被当做参数或者作为结果返回

    支持 0 反对 0 举报
    2021-11-28 11:20