请问老师,这段代码有店不明白,return 了这个嵌套函数,但是我没有理解那么有接受他的返回值

请问老师,这段代码有店不明白,return 了这个嵌套函数,但是我没有理解那么有接受他的返回值

问题描述:

return function (...args) {
          const self = context || this;

          if (timer) {
            clearTimeout(timer);
          }

          timer = setTimeout(() => {
            fn.apply(self, args);
            timer = null;
          }, miliseconds);
        };


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,这里调用的debounce方法的时候就是return的结果。如下:

https://img1.sycdn.imooc.com//climg/62f4997909f3ac8708160196.jpg

定义debounce函数后,参数fn是相当于传递进来的函数,那么最后将传递进来的函数“变成新函数”返回出去。那么

这里也就是说在调用的时候其实就是传参与接参就是已经得到了return的返回值了。

https://img1.sycdn.imooc.com//climg/62f49a1409df3c0209690627.jpg

同学尝试理解一下试试,祝学习愉快!

  • 慕田峪1427181 提问者 #1

    是不是由

      debounce(() => {

              winHeight = window.innerHeight;

              console.log(winHeight);

            }),

    传入函数,然后

    ffunction debounce函数里边有一个return返回函数,这个时间debounce函数体里边就是由return接管,

    fn是形参,但是调用形参的是 return返回的函数, 就是这句代码fn.apply(self这个是this指向本身,但是这个args这里由用吗)

    不知道我理解的对不对老师?

    2022-08-12 11:14:40
  • 好帮手慕小李 回复 提问者 慕田峪1427181 #2

    同学你好,这里同学理解的是对的。

    对于args来说我们可以打印一下看看它是什么如下:

    https://img1.sycdn.imooc.com//climg/62f5c71b092fb80907250327.jpg

    https://img1.sycdn.imooc.com//climg/62f5c77d09264b2611470372.jpg

    https://img1.sycdn.imooc.com//climg/62f5c86a091b417907550072.jpg

    打印后我们发现它其实就是数组,那么也就是说这里apply方法把这个数组集合中的元素作为参数传递给被调用的函数。这里args起到的就是这个作用。

    这里确实不好理解,同学目前能明白一个大概即可。

    祝学习愉快!

    2022-08-12 11:36:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师