每一个执行上下文都有一个变量对象,在函数内部定义的所有变量和函数都被添加到这个对象的属性.
整个过程的描述:
1> 对于任何形参,在变相对象上添加相应的属性,并把它们的值设置为传递给函数参数的值
2> 对于任何函数声明,在变量对象上添加相应的属性,值即为该函数.如果一个函数声明使用了和形参中任何一个相同的标识符,那么那个属性将被覆盖.
3>对于任何变量声明,在变量对象上添加相应的属性,初始化它们的值为undefined,不管这些变量在源代码中是怎样呗初始化的,如果一个变量使用与一个已经定义过的属性相同的标识符,那么
这些定义过的属性不一定被覆盖
该算法的作用就是是所谓的函数和变量声明的提升,虽然函数作为整体被提升,但变量却只有它们的声明呗提升