hashchang事件是非同步更新的

story.Write(z)發表於2024-04-15

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,都是在下一個迴圈執行

相關文章