作用域
是变量起作用的范围。
作用:隔离变量。
作用域的确定时机:进入到执行环境就已经确定好。
种类:全局作用域,局部(函数)作用域,块级作用域(ES6)。
执行环境销毁作用域也会跟着销毁。
每个函数多次调用会产生不同的执行环境。不同执行环境的作用域也不一样。变量也不冲突。
全局变量:在整个全局作用域的所有地方都可以访问。
局部变量:在自己所在的函数作用域才能访问。
作用域链
描述查找变量的一系列过程。
函数在定义的时候就已经生成了一个[[scope]]属性,给系统使用的,存储了作用域的层级。
函数的作用域链是函数执行的时候创建的,当前函数的作用域链由它的作用域+[[scope]]属性组成。