读书笔记-《你不知道的JS》-做用域

变量的赋值操做会执行两个动做:函数

  • 编译器在当前做用域 声明 一个变量(若是以前有声明,则忽略,继续编译)
  • 运行时,引擎在做用域查找该变量,若是找到就 赋值 ,不然抛异常

做用域是根据名称查找变量的一套规则,肯定在何处以及如何查找变量

做用域链

做用域能够嵌套,在当前做用域找不到某个变量时,引擎会在外层嵌套的做用域中继续查找,直到找到该变量(找到第一个就中止)或抵达最外层的做用域(全局做用域)为止作用域

ReferenceError 引用错误,同做用域判别失败相关

TypeError 做用域判别成功,可是对结果的操做是非法或不合理的

LHS查询 对变量进行赋值

RHS查询 获取变量的值

词法做用域由书写代码时函数声明的位置决定

函数做用域

属于这个函数的所有变量均可以在整个函数的范围内使用及复用编译器

区别函数声明和函数表达式的方法,若是function是第一个词,那就是函数声明

当即执行函数(IIFE)是一个函数表达式io

做用域分类

  • 函数做用域
  • 块做用域
相关文章
相关标签/搜索