JS中RHS引用和LHS引用的区别

本文深入解析JavaScript中的LHS(左值引用)与RHS(右值引用)概念,通过实例详细说明两者在变量查找及赋值过程中的作用,帮助读者掌握JS核心机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时做前端开发的时候可能接触不到LHS和RHS这两个名词,但是它却是js中最基础的概念,表示两种变量的查找方式,在js代码中无处不在。我们来举个例子说明一下LHS和RHS。

var a = 1;  我们把这个表达式根据等号拆成两个部分,var a 和 = 1。这个里面var a进行的LHS查找,编译器遇到var a时,会询问作用域是否存在一个名为a的变量,如果有则忽略,如果没有则让作用域声明一个名为a的变量(就是声明一个容器,过一会用来存储数字1),等式右边进行的是RHS查找,也就是查找数字1本身的值(可以理解为数字1的物理地址),然后再将1赋给a。

我们再来看一个例子,console.log(a);这里的a进行的是LHS查找还是RHS查找呢?进行的是RHS查找,因为a没有赋予任何值,这里只需要找到a本来的值,并传递给log函数。而上面的a则是LHS查找,需要为 = 1找到一个赋值目标。

我们再来看一个复杂一点的例子:

function test(a) {
    console.log(a);
}
test(2);

这个例子里哪些是LHS引用哪些是RHS引用?

最后一行test是一个RHS引用,表示查找到test的值并把它给我,而(..)表示test需要被执行,所以这里test必须是一个Function,否则会报test is not a function的错误,然后我们再看函数中的console.log(a);这里a进行的是RHS查找,表示找到a的值并传递给log(..),其实这里的console也是进行的RHS查找,表示查找到console这个对象并检查对象中是否有一个log方法。

这里有一个容易被忽略的地方,就是传参时隐式的 a = 2,这里的a进行的是LHS查找,表示在作用域中查找一个名为a的变量,并且将2赋给它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值