关于arguments 怎么获取

来源:16-8 手写防抖 debounce

俊逸_ajay

2022-01-15

老师关于怎么传参的问题
图片描述
看了之前的提问
图片描述
看完后还是不知道怎么传,下面这样写也不对

    const input1 = document.getElementById('input1')
        function debounce(fn, delay) {
            let timer = null // timer是闭包中的
            return function () {
                if (timer) {
                    clearTimeout(timer)
                }
                timer = setTimeout(() => {
                    console.log(arguments)
                    fn.apply(this, arguments) // 面试的时候直接写 fn()也行了
                    // fn()
                    timer = null
                }, delay)
            }
        }

         function fn (a,b,c) {
            console.log(arguments)
         }
         const fn1 = debounce(fn, 600)
        input1.addEventListener('keyup', fn1(10, 20, 30))

正确该怎么写呢

写回答

2回答

笑着拍拍你的头

2022-09-05

语法错了fn1(10, 20, 30)是立刻执行,正确的写法:

return function (number, number1, number2) {
    // xxx
}

function fn (a,b,c) {
   console.log(a,b,c)
}
let fn1 = debounce(fn, 600)
input1.addEventListener('keyup', function (e) {
   fn1(1,2,3)
})


1
0

双越

2022-01-16

改成 fn.apply(this, Array.from(arguments)) 试试

0
1
一只小木马
老师,我试过了好像还是不行诶。。我在网上查了下也没找到关于这个传参数的例子
2022-05-24
共1条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程