Javascript is executed section by section, separated by script tags. Before executing each section, there is a "precompilation". Precompilation does two things: 1. Declare all var variables (initially undefined), 2. .Parse definitional function statements.
There is a classic article about the difference between "a = 1 and var a = 1 in window scope":
a = 1相当于window.a = 1,是动态地为window添加一个成员; var a = 1是在当前作用域(也就是window)下声明一个a,这个声明是在整个作用域内都有效的。 换句话说,其实区别就在于var a = 1比a = 1多了一个声明的行为。
Look at the following example:
1.
alert(w); alert('ok'); w = 2;
Error report: w is not defined
2.
alert(w); alert('ok');var w = 2;
pops up undefined and ok in sequence. During precompilation, the variable w is declared; when the alert(w) line of code is executed, t has not yet been assigned a value, so undefined pops up.
3.
a();function a() {}alert('ok');
Pop up ok. During precompilation, the defining function statement function a() {} is parsed and executed smoothly.
4.
b();var b = function() {}; alert('ok');
b is not a function, and an error will be reported when executed. During precompilation, the variable b = undefined was declared; when b() is executed, a is still equal to undefined and is not a function, so an error will be reported when b() is executed.
5.
<script type="text/javascript"> c(); alert('first');</script><script type="text/javascript"> alert('second');</script>
Pop up second. Because JavaScript is executed section by section, an error is reported when the first section is executed to c(), the entire first section will not be executed again, and the second section will be executed normally.
Related recommendations:
JavaScript execution sequence analysis
A brief introduction to JavaScript execution sequence
Detailed explanation of the loading and execution sequence of js in html
The above is the detailed content of Detailed explanation of js compilation and execution order. For more information, please follow other related articles on the PHP Chinese website!