JS作用域

2022/07/18 Javascript

作用域

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

LHS查询和RHS查询

LHS查询:赋值操作左侧的查询,LHS查询试图找到变量的容器本身,从而对其赋值。

可以理解为 :“赋值操作的目标是谁”

RHS查询:赋值操作右侧的查询,可以理解为“取到某某的值”

可以理解为:“谁是赋值操作的源头“

LHS查询

a=2;

这里主要目的是找到一个容器来保存“=2”。

RHS查询

console.log(a);

这里a并没有赋予任何值。同时,需要查找并取得a的值,这样才能将值传递给console.log(..)。

例子

function foo(a) {
    console.log(a);
}

foo(2);

LHS

  • 在调用函数过程中,给a赋值2。(已知2找到容器a,这里是一个隐式的赋值)

RHS

  • foo(…)(找到函数foo(...))
  • 函数内部console.log(…)(取得console.log(...)的最终结果)
  • console对象对log方法RHS查询
  • a(取得参数的值2)

例子

function foo(a) {
  var b = a;
  return a + b;
}
var c = foo(2);

LHS

  • var c = foo(2);(赋值)
  • var b =a;(赋值)
  • a=2;(赋值)

RHS

  • 查找foo(…)
  • var b = a;
  • return a + b;
  • return a + b;

Search

    Table of Contents