JavaScript 程序中的一段源代码在执行之前会经历三个步骤,统称为 编译
先看原书对一个赋值操作的拆解说明:
变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它赋值。 --- 《你不知道的JavaScript(上卷)》 P7
而要讲的 LHS 和 RHS 就是上面说的对变量的两种查找操作,查找的过程是由作用域(词法作用域)进行协助,在编译的第二步中执行。
LHS 和 RHS
先看个例子一
console.log(a);
这里对 a 是一个 RHS 引用,因为 a 并没有赋予任何值,目的是为了取到 a 的值并打印出来。
a = 2;
这里对 a 是一个 LHS 引用,因为实际上我们不关心当前的值是什么,只是想要把 a 赋值为 2。
再看例子二
function foo(a) { console.log(a); // 2 } foo(2);
小测验
function foo(a) { var b = a; return a + b; } var c = foo(2);
试试找出其中的3处 LHS 查询,4处 RHS 查询
答案:
LHS 查询:
c = ..;
a = 2(隐式变量分配)
b = ..
RHS 查询
foo(2..
= a;
a ..
.. b
小结
参考原书中文版P12,英文版见 github
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。