为了账号安全,请及时绑定邮箱和手机立即绑定

javascript + 操作符

javascript + 操作符

陪伴而非守候 2018-11-08 13:15:26
js 在控制台中++[[]][0] 为什么这个不报错++[] 这个报错呢
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

++[[]][0]
[[]]是一个只包含一个空数组的数组,那么根据运算符优先级,[] > (prefix)++,运算[[]][0],得到一个空数组Array(0),是一个对象,并且是数组中的一个值,符合左值的条件.之后进行(prefix)++运算,由于++运算将执行数据类型转换(PS:Javascript中具体的数据类型转换太复杂了,我就不展开了),这里Array[0]将转换成0,结果++得到1.

具体可看控制台输出:

console.log([[]])
// > [Array(0)]
console.log([[]][0])
// > []

++[]左值是一个空数组,不是一个合法的左值,所以报错.

什么是左值:

左值是一个古老的术语,它是指 表达式只能出现在赋值运算符的左侧。在JavaScript中,变量,对象属性和数组元素均是左值.


查看完整回答
反对 回复 2018-12-12
  • 1 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号