之前对JavaScript的底层运行机制不是很了解,错了很多面试图,痛定思痛,决定认真对待 JavaScript,好好了解一下它....JavaScript代码运行前,有一个类似编译的过程,叫做词法分析,就是分析代码或函数的一些变量,声明,对于重复命名的变量的处理....词法分析主要有三个步骤:
分析参数
分析变量的声明
分析函数的声明
具体步骤如下:
函数在运行前,会生成一个活动对象我们叫做 Active Object 简称AO
第一步 分析参数
函数接收形式参数,添加到...AO的属性中,并且这个时候属性的值是 如:
这个时候函数接收到的是实参, 那么 在这个词法分析的阶段name就是27
第二步 分析变量声明
如var name; var name...第五行代码有函数name, 则将function name(){} 付给AO.name 即AO.name = function name (){}
所以执行代码时:
第2行代码执行时,拿到name时词法分析后的