What is the loading and execution order of JavaScript scripts in a web page?
JavaScript scripts can be included in a web page in various ways, including:
- Inline code or loaded from an external URL
- Included within the or tags
- Having no, defer, or async attributes (for external scripts only)
- Included within static source or added dynamically using other scripts
Loading Order
Scripts are loaded in the order they are encountered in the HTML code, regardless of whether they are inline or external. However, scripts added dynamically may have their loading order affected by browser behavior.
Execution Order
The execution order of JavaScript scripts depends on several factors:
-
General Rule: Scripts are executed in the order they are encountered in the page, except for scripts marked with async.
-
async Scripts: Scripts marked with async are executed in an unpredictable order. They may run as soon as they are loaded or after the parser has finished.
-
Dynamically Added Scripts: The behavior of dynamically added scripts depends on the browser.
-
defer Scripts: Scripts marked with defer wait until the parser has finished and then execute in the order they were encountered.
-
Module Scripts (type="module"): Module scripts are automatically given the defer attribute and execute in order after parsing is complete. They can also use the async attribute to run inline module scripts immediately.
Example
In the given example with inline scripts in the body, the loading order is:
- Initialization scripts in the
- External scripts for script loading
- Inline script adding another external script
- Inline script using the added external script
The execution order depends on whether the dynamically added script is marked as async or not:
- If the added script is not marked as async, it will execute after the inline script that added it.
- If the added script is marked as async, its execution order is unpredictable and may occur before or after the inline script that added it.
The above is the detailed content of How Does JavaScript Handle Script Loading and Execution Order in Web Pages?. For more information, please follow other related articles on the PHP Chinese website!