为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2018-12-20 18:15:32
我在学习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....
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信