什么是作用域?
顾名思义,作用域是一个范围一个规则一个访问权限的区域;
需要一套设计良好的规则来存储变量,并且之后可以方便地找到这些变量。这套规 则被称为作用域。(from 你不知道的js上)
js工作原理
-
引擎
负责整个js的编译及执行
-
编译器
负责语法分析以及代码生成
-
作用域
负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施 一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。
LHS和RHS
含义是,赋值操作的左侧或右侧
引擎会对变量进行查询操作,LHS和RHS 是两种查找类型;
LHS,左查询,可以理解为是复制操作 RHS,右查询,可以理解为获取操作
ReferenceError 和 TypeError
ReferenceError同作用域判别失败相关,而TypeError则代表作用域判别成功了,但是对结果的操作 是非法或不合理的。
函数作用域的使用
最小暴露原则;
指在软件设计中,应该最小限度地暴露必要内容,而将其他 内容都“隐藏”起来,比如某个模块或对象的API设计。
- 全局命名空间(还污染全局作用域,用立即执行函数表达式可以解决这个问题)
- 模块管理
let
let关键字可以将变量绑定到所在的任意作用域中
let a = 1;
//等同于下面代码:
{
let a = 1;
}