一、js 编译
1. js 是按照代码块进行编译和执行,代码块之间相互独立。
2. 声明函数与赋值函数 (js 中的函数定义分为:声明式函数和赋值函数)
<script
type="text/javascript">
function
Fn(){ //声明式函数
}
var
Fn = function{ //赋值式函数
}
</script>
注:
声明式函数与赋值式函数的区别在于:
在JS的预编译期,声明式函数将会先被提取出来,然后才按顺序执行js代码。
3. 预编译与执行期
js解析过程分为两个阶段:预编译期(预处理)和执行期
a) 预编译期 ,js 会把js 中的变量和函数进行处理,此时的处理函数只是声明式函数,变量也只是声明,但不会赋值。
注:js 引擎是按照代码块的顺序执行,也可以说,预处理和执行也是按照代码块顺序执行,
预处理只是执行到的代码块的声明函数和变量,而对,未加载的代码块,是没办法进行预处理的
总结:
step 1. 读入第一个代码块。
step 2. 做语法分析,有错则报语法错误(比如括号不匹配等),并跳转到step5。
step 3. 对var变量和function定义做“预编译处理”(永远不会报错的,因为只解析正确的声明)。
step 4. 执行代码段,有错则报错(比如变量未定义)。
step 5. 如果还有下一个代码段,则读入下一个代码段,重复step2。
step6. 结束。
网友评论