原生js:LSH和RSH查询

182 阅读1分钟

一、什么是LSH和RSH

LSH: 找到变量,对其进行赋值操作,L可以理解为变量在=的左边,例如:let a = 10,对变量进行赋值

示例:为=10这个操作找到一个目标,这是一个LSH查找

a = 10

RSH: 获取变量的值

示例:查找并获取一个变量的值,这是一个RSH查找

console.log(a)

二、既有LSH,也有RSH

      function fn(a) { // LSH:参数10传进来时进行了赋值操作
        console.log(a) // RSH
      }
      fn(10) // 函数的调用需要对fn进行RSH查询

查找步骤:

  1. fn函数的调用,需要对fn函数进行RSH查找,并获取fn函数
  2. 当实参10传递给fn时,10会赋值给形参a,此时进行了LSH,隐式地进行了a = 10
  3. a进行RSH查询,并且将得到的值给console.log()console.log()本身也是RSH查询,对console对象进行RSH,并且检查得到的值是否有个叫做log的方法

三、总结

查询类型目的实例查询方向异常及处理
LSH对变量进行赋值a = 2在[[Scopes]]中从顶端向下查找,一直找到GO1、严格模式下会报错:Uncaught ReferenceError: a is not defined 2、非严格模式下,往window上添加一个同名属性(暗示全局变量
RSH获取变量的值console.log(a)同上报错:Uncaught ReferenceError: a is not defined