散记

1. js (1,2) 分组选中符,结果是2,以最后一个为准函数

2.执行上下文.变量对象(Variable Object)对象

咱们已经说过,每次执行(注意是执行而不是声明!)一个函数以前,执行引擎都会建立一个上下文对象。建立上下文对象的时候,就会建立它的一个重要属性:变量对象。 建立变量对象的过程是这样:内存

创建arguments对象:属性名是'0'、'1'、'2'.....,属性值就是实际传入的参数。此外arguments.length是实际参数的个数。 找到这个将要执行的函数内的全部函数声明,储存在变量对象中,属性名就是函数名,属性值就是函数的引用(所在的内存地址)。若是有多个同名的函数声明,后出现的函数覆盖前面的属性值。 找到这个将要执行的函数内的全部变量声明,储存在变量对象中,属性名就是变量名,属性值是undefined。作用域

变量提高:建立变量对象的时候,读取到做用域内存在var变量,变量对象里面建立var变量属性,并赋值为undefined,于是var变量能够在被声明前使用,let则会建立一个uninit的属性,调用出错it

这也是函数在声明前调用没有任何问题的缘由变量

js中,变量对象在进入做用域建立,因此for和if等没有独自做用域的{},内部变量与外部变量都统一被变量对象读取,从而形成没法造成块级做用域引用

相关文章
相关标签/搜索