关于js中++的小问题
来源:互联网 发布:淘宝团队规模 编辑:程序博客网 时间:2024/05/18 01:47
先看下面两个代码,为什么第一行正常(编译/运行),但第二行给出错误?注意是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异常。
<script> window.onload = function () { alert([[1]][0]++); //更新第一个元素的值, alert([1]++); //[1]是一个常量 Uncaught ReferenceError: Invalid left-hand side expression in postfix operation var a = [1]; var b = [a]; alert(b[0]++) //1 var a = [1]; //a是一个引用 alert(a++) //1 } </script>
注意:成员表达式的结果不是值本身([]),而是Reference对该值的影响 。所以事实上,[0]访问是给我们提到外部数组的第0个位置,
而不是给我们这个位置的实际值。
阅读全文
0 0
- 关于js中++的小问题
- 关于js中++的小问题
- 关于js中++的小问题
- js中关于字符串转日期的小问题集合
- 关于JS对象的一些小问题
- 开发中遇到的JSP结合JS(关于参数传递的)小问题
- js中定时器使用的小问题
- as js php中关于double小问题
- iBATIS中关于javabean的小问题
- iBATIS中关于JavaBean的小问题
- 赌博中,关于保赢时赔率的小问题、、、
- 关于js引入的先后顺序的小问题
- JS中关于函数调用的问题
- 关于js中时间戳的问题
- (小收获二)关于select标签与js的问题
- 关于js修改css属性的一个小问题
- 关于jQuery.query.js 取参数的一个小问题
- 关于js中用el表达式获取值的小问题
- C++顺序容器之list初探
- bzoj1529: [POI2005]ska Piggy banks(tarjan||并查集)
- webpack配置及优化
- display:none和visibility:hidden的区别
- 头文件与链接
- 关于js中++的小问题
- osg源码剖析(2)eventTravel事件处理
- python Excel的操作
- Java线程模型
- 2017 ACM/ICPC Asia Regional Shenyang Online//number number number
- css3圆角属性
- filter的创建和配置
- XListView上拉刷新数据及加载更多
- caffe---make发生的错误和解决办法1