求解一个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);
        }
    }
阅读 2.3k
3 个回答

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

function A(t) {
    return function(b, c) {
        return t + b + c;
    }
}

A(1)(2, 3) // 输出 6

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

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


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


第二种方式:

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

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

简单来说

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题