当变量出现在赋值操作的左侧时进行 LHS 查询,出现在右侧时进行 RHS 查询。
比如:a = 2
这里变量a出现在赋值操作的左侧,所以这里对 a 的引用则是 LHS 引用
把2赋值给a
而console.log( a )
这里 a 并没有赋予任何值,需要查找并取得 a 的值,才能将值传递给 console.log(..) ,对 a 的引用是一个 RHS 引用。
找到a的值,返回给我
可以将LHS理解为赋值操作的目标是谁,也就是赋值给谁。
RHS:得到这个变量的值,返回给我
简单说就是:赋值是LHS查询,调用是RHS查询
function foo(a) {
console.log( a ); // 2
}
foo( 2 );
对 foo 进行 RHS 引用:foo()调用就是对foo进行RHS引用,去找foo的值,返回给我
对a执行LHS 引用:将2赋值给a执行LHS 引用
对a进行RHS引用:将值传递给console.log()
对 console 对象进行 RHS 引用:console.log(..) 本身也需要一个引用才能执行,因此会对 console 对象进行 RHS 查询,并且检查得到的值中是否有一个叫作 log 的方法
function foo(a) {
var b = a;
return a + b;
}
var c = foo( 2 );
对c执行LHS 引用:var c = foo( 2 ),将foo( 2 )赋值给c,这里对c进行的LHS 引用
对 foo 进行 RHS 引用:foo()调用就是对foo进行RHS引用,去找foo的值,返回给我
对a执行LHS 引用:将2赋值给a
对b执行RHS 引用,再对b进行 LHS 引用:var b = a,取到a的值并赋值给b
对a、b执行RHS 引用:return a + b;找到a、b的值,返回两个相加的值
网友评论