一個JavaScript程式由以下組成:
JavaScript程式碼
<scirpt src:"..."> 標籤內src的外部程式碼
以上所有的程式碼都共用一個全域Window物件,也表示看到同一個document物件。
如果在網頁中嵌入<iframe>則內含的JavaScript屬於不同的全域物件。
JavaScript執行兩階段
非同步載入
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是單執行緒的,但在HTML5定義了web worker,提供了背景執行的執行緒。
一個web worker代表一個背景執行緒,若實現多個web worker代表會有多個背景執行緒,彼此執行緒沒有權利存取各自的執行緒包括主執行緒JavaScript,僅能透過非同步事件與其他執行緒溝通。