今天我们的内容是学习一下js的词法分析。
JavaScript代码运行前有一个类似编译的过程即词法分析,
(因为js的词法分析,是在js真正的执行之前,由浏览器中的js引擎来进行的,
所以真正的js的词法分析的过程,是无法演示的,
只能是通过一些个例子,给大家讲一个它的过程与理论。
)
Js词法分析主要有三个阶段:
1、分析你所传入的参数;
2、再来分析函数内部,变量的声明;
3、分析函数声明;
<!-- =========== -->
具体步骤:
-- Js运行之前的那么一瞬间,生成一个活动对象(Active Object),简直AO对象。
第一步,分析参数;
1、函数接收了形参,它会被添加到AO对象之前,此时它的值为undefined,
即,AO.n = undefined
2、函数接收了实参,把它再添加到AO的属性,覆盖了之前的undefined。
第二步,分析变量声明,
1、如果之前那一步参数中的AO还没有xx,就把这个属性的值设置为undefined;
2、如果之前AO对象,它已经有了xx属性,那么就不做任何的修改;
第三步,分析函数的声明
如果有function strPro(){}这个函数,
那么就把strPro做为属性,赋值给AO对象。
<!-- -->
看 demo.html
<!-- -->
今天的内容就这些,
主要是讲js在执行之前发生了些什么?
今天的内容最好是和上一期的“变量声明提升”一起看,
会比较有收获。