《你不知道的JavaScript》读书笔记——JavaScript LHS引用和RHS引用

原文地址:《你不知道的JavaScript》读书笔记——JavaScript LHS引用和RHS引用

什么是LHS引用和RHS引用

LHS 和 RHS 的含义是“赋值操作的左侧或右侧”并不一定意味着就是“ =赋值操作符的左侧或右侧”。赋值操作还有其他几种形式,因此在概念上最好将其理解为“赋值操作的目标是谁(LHS)”以及“谁是赋值操作的源头(RHS)

为什么要区分LHS引用和RHS引用

在变量还没有声明(在任何作用域中都无法找到该变量)的情况下,这两种查询的行
为是不一样的

  • 在变量未声明的情况下,对其进行RHS引用

    第一次对 b 进行 RHS 查询时是无法找到该变量的。也就是说,这是一个“未声明”的变量,因为在任何相关的作用域中都无法找到它。

    如果 RHS 查询在所有嵌套的作用域中遍寻不到所需的变量,引擎就会抛出 ReferenceError异常。值得注意的是, ReferenceError 是非常重要的异常类型。

  • 在变量未声明的情况下,对其进行LHS引用

    相较之下,在变量未声明的情况下,引擎执行 LHS 查询时,如果在顶层(全局作用域)中也无法找到目标变量,全局作用域中就会创建一个具有该名称的变量,并将其返还给引擎,前提是程序运行在非“严格模式”下

发布了55 篇原创文章 · 获赞 29 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_33215972/article/details/85238268
今日推荐