首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

HTML 中 JS 文件加載順序對執行結果的影響原理解析

     編輯:程式設計綜合問答

現象

在《JavaScript DOM 編程藝術》第十章示例中,若將 addLoadEvent.js 放在第二個引入,功能失效;放在第一個則正常。

根本原因

JavaScript 引擎按順序解析執行每個 <script> 標籤。若後續腳本依賴前置腳本定義的函數、變量,順序顛倒會導致 ReferenceError。

典型依賴場景

  • addLoadEvent.js 定義了 addLoadEvent(fn) 工具函數。
  • 業務腳本調用 addLoadEvent(init) 註冊頁面加載回調。
  • 若業務腳本先載入,調用時 addLoadEvent 尚未定義 → 報錯中斷。

解決方案與最佳實踐

方案適用場景優缺點
調整 <script> 順序簡單頁面、少量腳本直觀但維護成本高,易出錯
使用 defer 屬性外部腳本、需按順序執行HTML5 標準,延遲到 DOMContentLoaded 前按順序執行
使用 async + 模塊化現代項目、獨立模塊並行下載,順序不定,需配合 ES Module import/export
打包工具生產環境、大型應用Webpack/Rollup 自動處理依賴圖,產出單文件

推薦寫法(現代瀏覽器)

<!-- 依賴庫先載入,defer 保證順序 -->
<script src="lib/addLoadEvent.js" defer></script>
<script src="app/main.js" defer></script>

或採用 ES Module:

<script type="module">
import { addLoadEvent } from './lib/addLoadEvent.js';
addLoadEvent(init);
</script>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved