今天在 《你不知道的Javascript(上)》 学习到了作用域相关的知识点. 记录一下…
举个栗子,看看他们是怎么工作的: var a = 2;
遇到var a,编释器会问作用域是否已经有一个该变量存在同一个作用域的集合中。如果是,编释器会忽略该次声明,继续进行编译;否则在该作用域声明一个变量接下来编释器会为引擎声明运行时所需要的代码,代码用来处理 a = 2 的这个赋值操作。接下来 ,引擎会问作用域是否存在变量a。 如果是引擎将使用这个变量;否则引擎会继续查找如果引擎最终找到了 a 变量,就会将 2 赋值给它。否则引擎就会举手示意并抛出一个异 常!LHS,RHS 这两个术语就是出现在引擎对变量进行查询的时候,我用我理解的方式解答:
LHS = 变量赋值或写入内存。 RHS = 变量查找或从内存中读取。
拿书中的例子做理解:
function foo(a) { var b = a; return a + b; } var c = foo( 2 );执行查找: LHS (写入内存):
c= , a=2 (隐式分配值) , b=
RHS (读取内存) :
foo(2) , =a, a, b
看书下的答案:
拜拜👋
