JavaScript的RHS引用和LHS引用
JavaScript的RHS引用和LHS引用
- RHS是我要找到名为某某的变量,我要知道它的值是什么。
- LHS是我要找到名为某某的变量,将值赋值给它,我不需要知道这个变量之前的值是什么
我们看着段代码
var b = 2;
console.log(b);
给变量查找变量b并给其赋值,就是LHS引用;获取b的值就是RHS引用
function foo(a){
console.log(a);
}
foo(2);
这段代码看起来很简单,但里面的引用却较为复杂。
首先,"去找foo的值,并把它给我",于是找到了foo,它是个函数,去执行它,这里要注意,函数有参数a,这里会执行一个LHS引用,把2赋值给a,这经常被忽略掉,然后别忘了,console.log
也要进行引用,对console
对象进行RHS引用,并检查里面是否有一个叫作log的方法,然后就是对a进行RHS引用,获取a的值,接下来还有最后一步,就像foo(2)
一样,log(a)
,将a传递进去,引擎实现这个log
的方法,理论上也会进行一次LHS的引用。
最后不管是LHS
查询或RHS
查询都会在当前的作用域找,找不到,再父级作用域找,直到全局作用域,如果还找不到那就会报错。
一道小试题
请问这段代码有几处RHS引用和LHS引用
function foo(a){
var b = a;
return a + b;
}
var c = foo(2);
好了,这两个知道还是没啥用处,它一种偏冷的知识,不过知道了,有种13格比较高的感觉。