什么是LHS引用和RHS引用
LHS 和 RHS 的含义是“赋值操作的左侧或右侧”并不一定意味着就是“ =赋值操作符的左侧或右侧”。赋值操作还有其他几种形式,因此在概念上最好将其理解为“赋值操作的目标是谁(LHS)
”以及“谁是赋值操作的源头(RHS)
“
为什么要区分LHS引用和RHS引用
在变量还没有声明(在任何作用域中都无法找到该变量)的情况下,这两种查询的行
为是不一样的
-
在变量未声明的情况下,对其进行RHS引用
第一次对 b 进行 RHS 查询时是无法找到该变量的。也就是说,这是一个“未声明”的变量,因为在任何相关的作用域中都无法找到它。
如果 RHS 查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError异常。值得注意的是, ReferenceError 是非常重要的异常类型。
-
在变量未声明的情况下,对其进行LHS引用
相较之下,在变量未声明的情况下,引擎执行 LHS 查询时,如果在顶层(全局作用域)中也无法找到目标变量,全局作用域中就会创建一个具有该名称的变量,并将其返还给引擎,前提是程序运行在非“严格模式”下
网友评论