变量的赋值操做会执行两个动做:函数
- 编译器在当前做用域 声明 一个变量(若是以前有声明,则忽略,继续编译)
- 运行时,引擎在做用域查找该变量,若是找到就 赋值 ,不然抛异常
做用域是根据名称查找变量的一套规则,肯定在何处以及如何查找变量
做用域链
做用域能够嵌套,在当前做用域找不到某个变量时,引擎会在外层嵌套的做用域中继续查找,直到找到该变量(找到第一个就中止)或抵达最外层的做用域(全局做用域)为止作用域
ReferenceError 引用错误,同做用域判别失败相关
TypeError 做用域判别成功,可是对结果的操做是非法或不合理的
LHS查询 对变量进行赋值
RHS查询 获取变量的值
词法做用域由书写代码时函数声明的位置决定
函数做用域
属于这个函数的所有变量均可以在整个函数的范围内使用及复用编译器
区别函数声明和函数表达式的方法,若是function是第一个词,那就是函数声明
当即执行函数(IIFE)是一个函数表达式io
做用域分类