JavaScript中的LHS和RHS查询

举个栗子,var a = 2; JavaScript引擎会将它分为几步完成呢?
  答案是两步,JavaScript 会将其看成两句声明:var a;a = 2;
第一个定义声明在编译阶段进行。
第二个赋值声明会被留在原地等待执行阶段。

下面是原书对这句声明的拆解分析:

变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在引用域中查找该变量,如果能够找到就会对它赋值。

LHSRHS就是上面说的对变量的两种查找操作,查找的过程是由作用域(词法作用域)进行协助,在编译的第二步中执行。
LHS(Left-hand Side)引用和RHS(Right-hand Side)引用。通常是指等号(赋值运算)的左右边的引用。
我们来看下面这句代码:

console.log(a);

这里对a的引用是一个RHS引用,因为这里a并没有赋予任何值,我们只是想查找并取得a的值,然后将它打印出来。

a = 2;

这里对a的引用是一个LHS引用,因为我们并不关心当前的值是什么,只是想要为赋值操作找到目标

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容