什么是作用域?
一个变量可用的范围
1、全局作用域window:全局变量
在程序的任何位置都能反复使用===》全局污染
2、函数作用域:局部变量
局部变量(AO:Action Object):仅在函数内可用
函数的生命周期:
1)开始执行前(生命提前阶段)
创建执行环境栈(数组):临时保存正在执行的函数执行环境
向执行环境中添加一个默认程序main(),该方法创建出一个全局作用域的对象window
2)定义函数时
创建函数对象,封装函数的定义
声明函数变量,引用了函数对象,函数对象的scope属性引用,创建函数时的作用域
3)调用函数时
在ECS中加入一个新的元素(执行环境)记录新函数的调用
创建一个活动对象,保存本次调用用到的局部变量(函数的参数,在函数体内使用var关键字声明的数据)
ESC中的新执行环境元素 ,引用活动对象
活动对象中的parent属性引用函数的scope指向的父级作用域对象
4)调用函数后
执行环境栈中本次函数的执行环境出栈
导致活动对象被释放,导致局变量一同释放
作用域链
右多级作用域连续引用形成的链式结果
掌握一切变量的使用顺序 :先在局部找,没有则延作用域链向父级作用域中找