javascript - 为什么++[[]][0]返回1而不是报错?

标签 javascript

这是有效的,并且在 JavaScript 中返回数字 1:

++[[]][0]

为什么不报告像 ++[] 这样的错误?

这不是和++[]一样吗?

注意:这与:Why does ++[[]][+[]]+[+[]] return the string “10”. 有点不同。

我的意思是为什么++[[]][0]不报告错误? [[]][0] 是变量吗?如果没有,为什么不报告如下错误:

++[] // returns Invalid left-hand side expression in prefix operation.

最佳答案

The prefix increment operator (++) calls PutValue ,和PutValue throws a ReferenceError when the argument is not a Reference .

所以以同样的方式

var a = [];
++a; // returns 1

有效,因为 a 是对 [] 的引用,但 ++[] 无效,因为 [] 是数组文字,而不是引用。

同样,[[]][0] 是对 [] 的引用,因此增加该引用再次有效。

这也类似于

++1 // throws ReferenceError
var a = 1;
++a // returns 2

关于javascript - 为什么++[[]][0]返回1而不是报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37837115/

相关文章:

javascript - 如何获取 jQuery.get "Data"中的特定元素

当在html表最后一行中按Enter键时,javascript插入与第一行相同的新行

javascript - 在 2 个分隔符之间拆分字符串并包含它们

javascript - 使用 jquery 删除动态创建的行并绑定(bind)/更新现金总额

javascript - 使用 jQuery 拉取 JSON 对象以避免 XSS

javascript - 如何使用 Google Charts 制作柱形图开始动画?

javascript - 检测边缘 ://flags/#edge-click-once enabled in Chromium Edge

php - 从一个网页重定向到另外两个网页

javascript - $location.path ("/");不能正常工作

php - $(this).next() 的问题