hashchang事件是异步更新的

1.代码

  // 此时会触发hashchange
  location.hash = '/test'
    window.addEventListener('hashchange', () => {
      console.log('hashchenge')
    })

    // 此时不会触发hashchange
    location.hash = '/test'
    setTimeOut(() => {
      window.addEventListener('hashchange', () => {
        console.log('hashchenge')
      })
    },0)

2.测试与结论

  • 测试: 进入一个未绑定hahschange事件的网页,在控制台输入以上代码
  • 结论: 如果hahschange是同步的,则不应该触发hashchange事件,但是触发了,证明hashchange事件类似于React的setState,都是在下一个循环执行
posted @ 2024-04-15 10:11  story.Write(z)  阅读(11)  评论(0编辑  收藏  举报