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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款