瀏覽器加載JS文件的先后順序同具體的解析和執行有什么關系?
肯定瀏覽器是按照從前之后,由上到下的順序解析頁面,因此正常情況下,JavaScript腳本的執行順序也是從上到下的,即頁面上先出現的代碼或先被引入的代碼總是被先執行,即使是允許并行下載JavaScript文件時也是如此。
同時,請注意, 在HTML中加入JavaScript代碼有多種方式,概括如下(不考慮requirejs或seajs等模塊加載器):
(1)通過document.write方法向頁面寫入<script>標簽或代碼
(2)通過動態腳本技術,即利用DOM接口創建<script>元素,并設置元素的src,然后再將元素添加進DOM中。
(3)通過Ajax獲取腳本內容,然后再創建<script>元素,并設置元素的text,再將元素添加進DOM中。
(4)正常引入:即在頁面中通過<script>標簽引入腳本代碼或者引入外部腳本
(5)直接把JavaScript代碼寫在元素的事件處理程序中或直接作為URL的主體
有一個很典型的例子:
<script>
alert(document.getElementById('myid'));
</script>
<div id="myid" />
<script>
alert(document.getElementById('myid'));
</script>
第一個alert顯示NULL,因為HTML還未解析,元素不存在。
第二個alert顯示[object HTMLDivElement]
歡迎討論。