请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于 this 的问题

'use strict'
function debounce(fn, delay = 500) {
  let timer = null
  return (...args) => { //箭头函数
    clearTimeout(timer)
    timer = setTimeout(() => {
      console.log(this) //使用严格模式:undefined 不使用严格模式:Window
      fn.apply(this, args) 
      //这里的 this 是 undefined 为什么后续的代码还能正常的运行呢?
    }, delay)
  }
}
const input1 = document.getElementById('input1') 
input1.addEventListener(
  'keyup',
  debounce((ev) => {
    console.log(ev.target) // <input type="text" id="input1">
    console.log(ev.target.value)
  }, 600)
)

正在回答 回答被采纳积分+3

1回答

双越 2020-06-22 19:26:47

这里的 this 是 undefined 为什么后续的代码还能正常的运行呢? —— 因为后续的代码没有用到 this 。

0 回复 有任何疑惑可以回复我~
  • 提问者 h4ck3r #1
    我没有明白 apply 在这里起了什么作用
    回复 有任何疑惑可以回复我~ 2020-06-22 20:50:57
  • 双越 回复 提问者 h4ck3r #2
    现在可以用箭头函数跨函数获取 this ,确实可以让这里的 apply 解放了。不过,因为上述代码中 args 是一个参数即可,所以用 apply 去调用传递,会更方便一些。
    回复 有任何疑惑可以回复我~ 2020-06-22 22:09:13

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号