iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 16
0

JavaScript程式的執行

一個JavaScript程式由以下組成:

  • JavaScript程式碼

    • HTML 處理器
    • JavaScript: URL
    • 標籤內程式
  • <scirpt src:"..."> 標籤內src的外部程式碼

以上所有的程式碼都共用一個全域Window物件,也表示看到同一個document物件。
如果在網頁中嵌入<iframe>則內含的JavaScript屬於不同的全域物件。

  • JavaScript執行兩階段

    • 第一階段: 文件內容載入,執行所有JavaScript(包含外部script,行內script,<script>之間的JavaScript)
    • 第二階段: 非同步階段及事件觸發階段。load是最早被觸發的事件,當被觸發表示文件已載入完成。
  • 非同步載入
    script tag提供兩個延遲執行的屬性defer、async。
    比較以下三種方式
    <script src"xxx.js" ></script> 當網頁執行到此會停下來,然後等xxx.js下載完且執行完畢,才繼續原本網頁的渲染。
    <script defer src"xxx.js" ></script> 當網頁執行到此會在背景下載xxx.js原本網頁沒有停下來繼續的渲染,待網頁渲染完畢再執行xxx.js
    <script async src"xxx.js" ></script> 網頁執行到此不停下來,在背景下載demo.js,待下載完畢原本網頁執行會停止,先回來執行xxx.js,執行完畢後,再繼續原網頁的執行。

JavaScript執行緒

核心JavaScript是單執行緒的,但在HTML5定義了web worker,提供了背景執行的執行緒。
一個web worker代表一個背景執行緒,若實現多個web worker代表會有多個背景執行緒,彼此執行緒沒有權利存取各自的執行緒包括主執行緒JavaScript,僅能透過非同步事件與其他執行緒溝通。


上一篇
Day 15: 瀏覽器中的JavaScript (Part 1)
下一篇
Day 17: Window物件
系列文
Javascript 犀牛本-濃縮再濃縮 提煉再提煉30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言