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