关于js中++的小问题

先看下面两个代码,为什么第一行正常(编译/运行),但第二行给出错误?注意是ReferenceError。

[[]][0]++;           
[]++; #Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

第一想法[[]][0]应该和[ ]是一样的,所以两者都应该工作,或者两者都应该失败。

首先,这不是一个SyntaxError!这是一个运行时错误ReferenceError。所以[ ]++是语法允许的。

想要解决这个问题,就应该查查什么事ReferenceError。再看下面:

2=3
#Uncaught ReferenceError: Invalid left-hand side in assignment

这个错误和上面的错误一样。

因为这两个操作都使用称为“PutValue”的规范中的抽​​象算法。该算法的第3步说:

  如果Type(V)不是Reference,则抛出ReferenceError异常。

注意:成员表达式的结果不是值本身([]),而是Reference对该值的影响 。所以事实上,[0]访问是给我们提到外部数组的第0个位置,

而不是给我们这个位置的实际值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值