因為在body以外寫script也可能存在其他異常嘛。有什么理由能讓開發者推斷出后者會更安全呢?實際上在沒有充分測試的前提下,如果要進行推斷,那么可以推斷出后者的風險更大。
第二,雖然將<script>寫在</body>之后,但最終的DOM樹里,<script>元素還是會成為body的子節點,這一點很容易在firebug等調試器里驗證。既然如此,如果將<script>寫在</body>之前會有問題,你又如何保證寫在之后(並在DOM里又變成了和寫在之前一樣的結構)就沒有問題?
我們<script>標簽這里面有兩個屬性(async和defer),現在80%的瀏覽器都可以識別他們,這兩個屬性能讓瀏覽器做到一邊下載JS(還是只能同時下載兩個JS),一邊解析HTML。他的優點不是增加JS的並發下載數量,而是做到下載時不block解析HTML。
1 <script type="text/javascript" src="path/to/script1.js" async></script>
2 <script type="text/javascript" src="path/to/script2.js" async></script>
async屬性能保證script會異步執行,只要下載完就執行,這會導致script2.js可能先於script1.js執行(如果script2.js比較大,下載慢)。
defer屬性就能保證script有序執行,script1.js先執行,script2.js后執行。