引擎

查找变量

LHS

当变量出现在赋值操作的左侧时进行LHS查询

如果查找的目的是对变量进行赋值,那么就会使用LHS查询

LHS查询是试图找到变量的容器本身,从而可以对其赋值

非严格模式下:LHS查询找不到目标变量,会自动隐式地在全局作用域中就会创建一个具有该名称的变量,并将其返回给引擎。

严格模式下:LHS查询找不到目标变量时,引擎会抛出ReferenceError异常。

1function fn() {
2  name = 'dancy';
3}
4fn()
5console.log(window.name);

RHS:

当变量出现在赋值操作的右侧时进行RHS查询

如果目的是获取变量的值,那么就会使用RHS查询。

RHS查询与简单地查找某个变量的值别无二致,可以理解成取到它的原值,得到某某的值。

RHS查询找不到所需的变量,引擎会抛出ReferenceError异常。