JavaScript 程序中的一段源代码在执行之前会经历三个步骤,统称为 编译
先看原书对一个赋值操作的拆解说明:
变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎会在作用域中查找该变量,如果能够找到就会对它赋值。 --- 《你不知道的JavaScript(上卷)》 P7
而要讲的 LHS 和 RHS 就是上面说的对变量的两种查找操作,查找的过程是由作用域(词法作用域)进行协助,在编译的第二步中执行。
LHS 和 RHS
Left Hand Side
和 Right Hand Side
即左手边和右手边 赋值操作的左侧和右侧
先看个例子一
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。