作用域
就是变量的作用范围
- 全局作用域:程序最外层作用域,一直存在
- 函数作用域:函数定义时创建
- 块级作用域:const/let声明过的
预解析
- 变量提升
- 只提升声明部分,赋值语句还会保留在原地
- 函数提升
- 整体提升,在函数定义语句之前,就执行该函数
- 函数表达式
- 只提升声明部分
- 注意:提升至作用域最前面
- 作用域确认时间:函数声明的时候
作用域链
- 多个嵌套的作用域形成的由内向外的结构,用于查找变量
执行上下文
- 每次函数调用的时候,会在内存开辟一块空间
- 组成部分
- 运行当前函数所需要的内存
- 变量对象
- 创建时间:函数调用的时候
- 销毁时间:函数执行结束