关于requestAnimationFrame传匿名函数的问题

wing_kai
  • 657

片段A

const moveHandler = function() {
  window.requestAnimationFrame(() => {
    // do something...
  })
}

dom.addEventListener('mousemove', moveHandler)

片段B

const moveHandler = function() {
  // do something...
}

dom.addEventListener('mousemove', function() {
  window.requestAnimationFrame(moveHandler)
})

请问两种写法有区别吗?这是我在做拖拽某个dom的效果时遇到的问题

回复
阅读 431
2 个回答
✓ 已被采纳
  1. 片段A里,可以使用document.removeEventListenerremove掉moveHandler事件,而片段B不行;
  2. requestAnimationFrame无论是匿名函数函数,还是传入一个具体的方法,都没有区别

个人觉得比较推荐片段A的写法:

1. 有函数名以及引用地址,可以removeEventListener
2. 浏览器断点调试时,有函数名更易辨识
3. 代码易于理解 -- 个人写代码更喜欢这种能追根溯源的

就达到的效果而言,没有区别

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏