变量对象

 每一个执行上下文都有一个变量对象,在函数内部定义的所有变量和函数都被添加到这个对象的属性.

整个过程的描述:

 1> 对于任何形参,在变相对象上添加相应的属性,并把它们的值设置为传递给函数参数的值

   2> 对于任何函数声明,在变量对象上添加相应的属性,值即为该函数.如果一个函数声明使用了和形参中任何一个相同的标识符,那么那个属性将被覆盖.

   3>对于任何变量声明,在变量对象上添加相应的属性,初始化它们的值为undefined,不管这些变量在源代码中是怎样呗初始化的,如果一个变量使用与一个已经定义过的属性相同的标识符,那么        

     这些定义过的属性不一定被覆盖

 该算法的作用就是是所谓的函数和变量声明的提升,虽然函数作为整体被提升,但变量却只有它们的声明呗提升

原文地址:https://www.cnblogs.com/aaronjs/p/2386129.html