JavaScript 预编译与解释执行
JavaScript 预编译与解释执行
JavaScript在装载时的执行顺序是根据脚本标签<script>的出现的顺序来确定的。但其在解释执行前,会
对JavaScript进行一次“预编译”,在预编译的过程中,将那些用var声明的变量设置为活动对象的属性,
默认值为“undefined”,并且将那些以function定义的函数也添加为活动对象的属性,而且他们的值正
是函数的定义,匿名函数将不被解析。变量初始化过程即赋值过程发生在解释执行期,而不是编译期。
范例1:
<script type='text/javascript'> test(); function test() { alert('a'); } </script>
以上代码能被正确执行。因为在预编译时,test函数的值已被定义。
范例2、
<script type='text/javascript'> test(); var test=function() { alert('a'); } </script>
原因是var变量a在预编译时只被声明,并未赋值,故出现错误提示。
范例3、
<script type='text/javascript'> alert(a); var a=1; </script>
结果提示undefined,因为var声明的变量在预编译时,默认值为undefined

浙公网安备 33010602011771号