js的作用域存在以下几大类
- 全局作用域
- 函数作用域
- 块级作用域
- 词法作用域
全局作用域
存在于整个程序生命周期内,var挂载在window顶级对象下, let/const声明的在全局script下
优点:
- var声明的可以重新声明(更改变量指引)
- let 不允许重新声明, 更改变量的值
- const 不允许重新声明,简单类型一旦声明就不能再更改,复杂类型是可以更改变量的值
-
缺点:
命名冲突
- 会一直占用内存,除非手动垃圾回收
函数作用域
存在于某个函数被声明的范围内,函数内可反问,外部不可直接访问
优点:
缺点:
暂时没太多缺点,想访问函数作用域内的数据,可通过闭包的形式