script標籤到底放哪
阿新 • • 發佈:2019-02-20
1,就速度而言:
將<script>放頭部,會先下載js檔案再執行html,給使用者感覺卡;
將<script>放最後,對於高度依賴js的html,會顯得慢。
async和defer屬性讓瀏覽器一邊下載js,一邊解析html。
帶async屬性的script會非同步執行,只要下載完就執行,這會導致script2.js可能先於script1.js執行。
defer就能保證script有序執行,script1.js先執行,script2.js後執行
2,就執行函式任務而言:
如果函式中有用到html中的屬性,值等,需要等待html被解析完再執行函式(因為瀏覽器是按順序執行,解析程式碼的)。例如:
若在head頭部呼叫函式aler();
function alert(){
var x1=document.getElementById("div1");
alert(x1.value);
}
aler(); //瀏覽器毫無反應
html:
<div id="div1">HELLO</div>
若在被使用了屬性的標籤之後呼叫函式:
function aler(){
........}
html:
<div id="div1">HELLO</div>
<script>
aler(); //HELLO;
</script>