代码块就是使用 <script> 标签包含的 JavaScript 代码段。
在下面示例中,使用了两个 <script> 标签分别定义两个 JavaScript 代码块。
<script>
//JavaScript 代码块 1
var a = 1;
</script>
<script>
//JavaScript 代码块 2
function f(){
alert(1);
}
</script>
浏览器在解析这个 HTML 文档时,如果遇到第一个 <script> 标签,则 JavaScript 解释器会等到这个代码块的代码都加载完后,再对代码块进行预编译,然后执行。执行完毕,将继续解析后面的 HTML 代码,同时 JavaScript 解释器也准备好处理下一个代码块。
如果在一个 JavaScript 代码块中调用后面代码块中声明的变量或函数,就会提示语法错误。例如,当 JavaScript 解释器执行下面代码时就会提示语法错误,显示变量 a 未定义。
<script>
//JavaScript 代码块 1
alert(a);
</script>
<script>
//JavaScript 代码块 2
var a = 1;
</script>
如果把两块代码放在一起,就不会出现上述错误。合并代码如下:
<script>
//JavaScript 代码块
alert(a);
var a = 1;
</script>
JavaScript 是按块执行的,但是不同块都属于同一个作用域(全局作用域),下面块中的代码可以访问上面块中的变量。因此,如果把上面示例中两个代码块的顺序调换一下,就不会出现语法错误。
<script>
//JavaScript 代码块 2
var a = 1;
</script>
<script>
//JavaScript 代码块 1
alert(a);
</script>