javascript的LHS和RHS

编译器在编译的过程中生成了代码,引擎执行的时候,会通过查找变量a来判断他是否声明过。查找的过程由作用域协助。

LHS和RHS基本看名字就能知道,L是左,是右。变量出现在复制操作的左侧时进行LHS查询,而在右侧时进行RHS,更确切的说,RHS是代表非左侧。

LHS查询比较松散,如果查询不到就会在全局作用域创建一个具有该名称的变量,不会抛出异常(非严格模式下,在严格模式下找不到,会抛出ReferenceError异常)。但是RHS查询比较严格,如果查询不到,引擎就会抛出ReferenceError异常,其实一想就明白,你在右侧,本来就是为了给左侧赋值,如果你本身还找不到值,那肯定是有错的。

以下是《你所不知道的JAVASCRIPT》中的两个例子

1.

function foo(a){
    console.log(a);//console ②RHS    这里有个隐式的a=2②LHS

}
foo(2); // foo①RHS  这里有个隐式的a=2①LHS

2.

function foo(a){
    var b = a ; // b= ③LHS   =a ②RHS
    return a + b;  aRHS ④RHS
}
var c = foo(2);//c= ①LHS  这里有个隐式的a=2LHS  foo ①RHS


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值