LHS 与 RHS 查询
什么是 LHS 与 RHS 查询
最简单的理解可以概括如下:如果查找的目的是对变量进行赋值,那么就会使用 LHS 查询;如果目的是获取变量的值,就会使用 RHS 查询。
分析 var a = 2 是什么查询
var a = 2,很显然是将 2 赋值给变量 a,所以这是 LHS 查询
再分析下面几个列子
例一
- 首先
(a)中的 a 我们要获取a这个变量的值,这时就需要执行RHS查询 - 再者
console.log()本身也需要一个引用才能执行,这时候我们还需要获取console的引用,所以要对console执行RHS查询。当我们查询到console的引用后,会检查得到的值中是否有一个叫做log的方法
这里不会再对
log进行RHS查询。因为对console查询完毕后,对象属性访问规则会接管对log属性的访问。对象会接管其下面的属性的访问
例二
function foo(fnn) {
console.log(fnn);
}
foo('girl');
- 首先
foo(...)我们需要找到它的引用,这时就需要执行RHS查询 - 然后我们隐式的将
girl这个值赋值给了函数参数中的fnn这个变量,这时就需要执行LHS查询 - 最后对
console.log(fnn)的分析就和例一一样,对fnn进行RHS查询,对console.log进行RHS查询
例三
function foo(fnn) {
var wfly = fnn;
return fnn + wfly;
}
var c = foo('girl');
- 首先
var c = foo('girl')中,foo(...)我们需要找到它的引用,这时就需要执行RHS查询,然后将值赋值给c,执行LHS查询 - 然后我们隐式的将
girl这个值赋值给了函数参数中的fnn这个变量,这时就需要执行LHS查询 - 对
var wfly = fnn; 首先,获取fnn变量的值需要执行一次RHS查询,接着将fnn变量的值赋值给wfly变量,执行LHS查询 - 最后
return fnn + wfly需要对fnn执行RHS查询,同样的对wfly也要执行RHS查询
总结
所以共计执行了4次RHS查询,3次LHS查询
浙公网安备 33010602011771号