转摘:JavaScript:词法分析

JavaScript代码自上而下执行,但是在js代码执行前,会首先进行词法分析,所以事实上,js运行要分为词法分析和执行两个阶段。

词法分析

词法分析主要分为3步:
第1步:分析形参
第2步:分析变量声明
第3步:分析函数声明
如果存在函数嵌套,则从外往内进行词法分析

具体步骤:

    1. 在函数执行的一瞬间,产生一个空的 Active Object(活动对象),下面简称AO
    2. AO对象初始化
      2.1 函数声明的形参,形成AO的属性,默认值是undefined,
      2.2 接收实参,给刚刚形成AO的属性的形参赋值
    3. var声明、函数声明均被提升到函数体顶部(若var声明、函数声明同名,则函数声明将覆盖变量声明),注意,var声明只提前了声明部分,而函数声明提前了整个函数定义。
    4. 分析var声明变量!如 var age;(变量的值是在运行时期决定)
      4.1 如果AO上没有age属性,则给AO添加age属性,默认值是undefined
      4.2 如果AO上有age属性,则不做任何操作。
    5. 分析函数声明!如 function foot(){}
      51 如果AO上没有foot属性,则把函数赋给AO.foot属性
      5.2 如果AO上有foot属性,则会直接覆盖,把函数赋给AO.foot属性(因为:若var声明、函数声明同名,则函数声明将覆盖变量声明)
    6. 依据此时AO的值,自上而下执行代码
posted @ 2016-09-08 11:36  Asbefore  阅读(98)  评论(0)    收藏  举报