<!DOCTYPE html><html><head>? ? <title></title>? ? <script type="text/javascript">? ? ? ? function addLoadEvent(func){//記為①? ? ? ? ? ? var oldonload=window.onload;? ? ? ? ? ? if(typeof window.onload!='function'){? ? ? ? ? ? ? ? window.onload=func;? ? ? ? ? ? }else{? ? ? ? ? ? ? ? window.onload=function(){? ? ? ? ? ? ? ? ? ? oldonload();? ? ? ? ? ? ? ? ? ? func();? ? ? ? ? ? ? ? }? ? ? ? ? ? }? ? ? ? }? ? ? ? addLoadEvent(a);//記為②? ? ? ? function a(){//記為③? ? ? ? ? ? alert(document.getElementById('text'));? ? ? ? ? ? b();? ? ? ? }? ? ? ? function b(){//記為④? ? ? ? ? ? alert(document.getElementById('div0'));? ? ? ? }? ? </script></head><body>? ? <p id="text">hello</p>? ? <div id="div0">world</div></body></html>JS的執(zhí)行順序是怎樣的呢?我的理解是1、先裝載函數,即①-③-④,然后執(zhí)行②2、裝載①的情況不太清楚,不過好像此時并不會加載body內容;3、裝載③時獲取不到id為text的DOM元素4、裝載④時獲取不到id為div0的DOM元素5、執(zhí)行②時,調用① window.onload=a; 即body內容加載完后調用③,如果裝載函數的時候沒有獲取到id為text的DOM元素,最后卻獲取到了,那,這是因為重新獲取了一遍嗎?也就是說裝載時獲取一遍,調用時又獲取一遍嗎?還是上邊的3我判斷有問題?6、調用③時里邊又調用了④,與5有同樣的疑問,調用的時候重新獲取了一遍嗎?有大神講解一下嗎?好像知道代碼是如何運行的
JS執(zhí)行順序
sherryliu
2017-12-20 20:24:39