首先来看一下LHS和RHS
LHS:是赋值操作的左侧,可以理解为赋值操作的目标是谁
RHS:是赋值操作的右侧,谁是赋值操作的源头。
接下来看看这段代码的执行过程:
function foo(a){
console.log(a):
}
foo(2);
我们把这段代码想想成一段对话:
引擎:作用域,我需要对foo 进行RHS 引用,你见过吗
作用域:我见过呀,编译器刚刚声明了,他是一个函数,给你,
引擎:好,来执行一下foo
引擎:作用域,我需要对a进行一次LHS,你见过吗
作用域:编译器把a设置成了一个形式参数,给你
引擎:我要把2 赋值给a
引擎:作用域,我又要对console进行一次RHS引用,你见过吗
作用域:哦 这个是内置对象,给你
引擎:我看看里面有没有log(),哦 ,找到了
引擎:作用域,在帮查下a的RHS引用,
作用域:这个变量没有动过,给你
引擎:我来把a的值传递给log吧