【问题标题】:Why do JS arrays accept comma-separated indices? [duplicate]为什么 JS 数组接受逗号分隔的索引? [复制]
【发布时间】:2015-07-06 13:03:48
【问题描述】:

我不小心输入了:

var x = [1, 2, 3, 4];
console.log(x[1, 2]); //this will log 3
console.log(x[3, 1]); //this will log 2

事实证明,我可以使用任意数量的逗号分隔索引来引用数组元素。始终使用最后一个索引。如果最后一个索引大于数组,则结果为undefined

为什么这种语法有效?

【问题讨论】:

  • 语法没有按照你的想法做。查看逗号运算符的文档:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • @EricJ。我认为来自 user1403582 的赞成评论实际上很好地回答了这个问题。也许我把它框错了;我不是在寻找规范编写者的意图。
  • 为什么在问这个问题之前没有阅读规范或文档?
  • @Ejay 因为拥有这样一个问答网站的目的是不必阅读整个规范来找出一件事。话虽如此,我接受我的问题是重复的。不过不容易找到,除非您知道自己在寻找什么。
  • 真的,问答网站是否违背了拥有操作员列表及其目的(或一种语言的文档)的目的?

标签: javascript


【解决方案1】:

因为属性访问括号的内容是一个表达式。在这种情况下,表达式是一系列操作数和comma operators,其计算结果为最终操作数(在您的示例中分别为21)。那就是要访问的数组索引。

这与在属性访问括号中的表达式中使用其他运算符来动态评估将要访问的属性名称基本相同,例如x[x.length - 1]x[some_var * 3]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多