我在学习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....
添加回答
举报
0/150
提交
取消