摘要:如果遇到多個帶的標(biāo)簽,那么他們的執(zhí)行順序是無法保證的。就像上面的代碼,無法保證一定會在前面執(zhí)行。但是這兩個腳本都會先于事件執(zhí)行。
在HTML里面使用javaScript有兩種方式:
1: 通過
以上的一段代碼,如果是放在
里面,那么頁面的解析(頁面的解析是遇到開始)就要等這兩段script執(zhí)行完了才會開始,并且規(guī)定那個先出現(xiàn)就先執(zhí)行哪個,所以以上代碼會先執(zhí)行alert("hello"),再執(zhí)行alert("javaScript")如果上面的代碼是放在body里面, 那上面代碼的存在則會直接導(dǎo)致頁面的解析,要等這段js代碼執(zhí)行完了,再繼續(xù)頁面解析的工作。
3:通過
以上的情況瀏覽器會按照文件出現(xiàn)的先后順序去下載和執(zhí)行代碼,意思就是b.js會在a.js執(zhí)行完之后再執(zhí)行。 **2:通過
遇到帶有async屬性的 從這個圖對比上面的第2種情況,可以看出,在下載js文件的時候,頁面的解析依然是在執(zhí)行的,只是下載完之后js的執(zhí)行會阻塞頁面的解析。 先來看一下defer的圖像表示: defer只在
如果上述代碼是放在body里面,那么它也是阻塞的,如果用圖表示的話就是:
如果遇到多個帶async的