基础之作用域

189 阅读1分钟

什么是作用域?

顾名思义,作用域是一个范围一个规则一个访问权限的区域;

需要一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量。这套规 则被称为作用域。(from 你不知道的js上)

js工作原理

  • 引擎

    负责整个js的编译及执行

  • 编译器

    负责语法分析以及代码生成

  • 作用域

    负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施 一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。

LHS和RHS

含义是,赋值操作的左侧或右侧

引擎会对变量进行查询操作,LHS和RHS 是两种查找类型;

LHS,左查询,可以理解为是复制操作 RHS,右查询,可以理解为获取操作

ReferenceError 和 TypeError

ReferenceError同作用域判别失败相关,而TypeError则代表作用域判别成功了,但是对结果的操作 是非法或不合理的。

函数作用域的使用

最小暴露原则;

指在软件设计中,应该最小限度地暴露必要内容,而将其他 内容都“隐藏”起来,比如某个模块或对象的API设计。

  • 全局命名空间(还污染全局作用域,用立即执行函数表达式可以解决这个问题)
  • 模块管理

let

let关键字可以将变量绑定到所在的任意作用域中

let a = 1;
//等同于下面代码:

{
    let a = 1;
}