在一个函数中返回一个函数时这个被返回的匿名函数没调用

我在学习js实现图片懒加载时,在已经实现了功能后利用函数节流进行性能优化,节流函数为throttle,在滑动滑轮时它会被调用,其中checkImg函数是实现图片加载功能的函数,确保是没有问题的,我现在碰到的问题就是throttle函数在执行时return的匿名函数不执行,所以没法实现节流,我一开始以为是这个匿名函数自己内部的问题,但后来注视了之后就留了一个console.log,也仍旧不执行,我在debug时看过程发现这个代码执行到return时就直接跳到了函数体结尾的}后,也就是没运行这个匿名函数,

代码如下:


function throttle(fn, canRun = 500) {

    console.log("fn:"+fn);

    let previous = null; //上次执行函数的时间

    return function(){

        console.log("11");

        /*var now = new Date(); //当前时间

        var  context = this; //当前上下文

        console.log("this:"+this);

        let args = arguments; //参数数组

        if (!previous)

            previous = now;

        //大于等于间隔时间,则执行一次函数

        if (canRun && (now - previous) >= canRun) {

            fn.apply(this, args); 

            previous = now;

        }*/

    }

}

window.onscroll = function(event) {

    //checxImg函数是实现图片加载功能的函数,我确定它是没有问题的

    throttle(checkImg,500);

    

};

求指点迷津,到底是哪里出了问题呢?

另外求指点fn.apply(this, args); 这句代码的意思,我不是很懂(毕竟这是看别人的博客跟着学的)我的理解是fn它调用自身,但不知道对不对,而且为何要这样做,直接fn()不就好了吗?求指教QAQ....


aluckdog
浏览 432回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript