关于requestAnimationFrame传匿名函数的问题

片段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的效果时遇到的问题

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

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

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

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

推荐问题