<script>
讓咱們從定義沒有任何屬性的<script>
開始。HTML 文件會被解析直到命中腳本文件,那個時候,HTML 將會中止解析而且將會發送一個請求去獲取這個文件(若是他是外鏈),在 HTML 繼續解析以前,腳本將會被執行。 html
<script async>
async
在 HTML 解析的同時下載文件,並且當文件完成下載以後,將會暫停 HTML 解析來執行文件。git
<script defer>
defer
在 HTML 解析的同時下載文件, 而且在 HTML 解析完成後才執行它,defer
的多腳本也保證了他們以它們出如今文檔上的順序被順序執行。github
一般,您但願儘量使用 async
, 而後是 defer
, 再是沒有這些屬性的腳本。這裏有一些經常使用的規則去遵照。web
async
defer
async
腳本依賴時用沒有異步屬性的內聯腳本,而且放在 async 腳本上方。IE9 及如下在實現 defer 的時候有一些特別嚴重的 bug,以致於腳本的執行順序沒法被保證,若是你須要支持 IE9 及如下,建議不要所有用 defer,而且對你的腳本不添加任何屬性,若是執行順序很重要。閱讀屬性說明文件異步