一、JavaScript 作用域
- 作用域为可访问的变量、对象、函数的集合
- 对象和函数同样也是变量
- 函数作用域: 作用域在函数内修改
JavaScript 局部作用域
- 变量在函数内声明,变量为局部作用域
- 局部变量:只能在函数内部访问
- 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁
JavaScript 全局作用域
- 变量在函数外定义,即为全局变量
- 全局变量有 全局作用域: 网页中所有脚本和函数均可使用
- 全局变量在页面关闭后销毁。
二、作用域链
- 当代码在一个环境中执行时,会创建变量对象的一个作用域链(作用域形成的链条)
- 作用域链的前端,始终都是当前执行的代码所在环境的变量对象
- 作用域链中的下一个对象来自于外部环境,而在下一个变量对象则来自下一个外部环境,一直到全局执行环境
- 全局执行环境的变量对象始终都是作用域链上的最后一个对象
- 内部环境可以通过作用域链访问所有外部环境,但外部环境不能访问内部环境的任何变量和函数