【问题标题】:Javascript Arrays - Ignoring Extra Index Values [duplicate]Javascript数组 - 忽略额外的索引值[重复]
【发布时间】:2014-05-14 17:27:52
【问题描述】:

在 Firefox、Safari 和 Chrome 中使用 Javascript(没有尝试过 IE),出现以下奇怪行为:

data = new Array(1,3,5,7,9);

data[1,7,3] = 88;

alert( data );     //  displays: 1,3,5,88,9

显然索引 [3] 处的值已更改(其他测试表明它实际上已更改数据 [3])。

第二个命令不会产生错误。它甚至不会在 NetBeans 中生成警告,在浏览器中显示时也不会生成错误。

我对此进行了更深入的探索。看来:

data[1,7,null,NaN,4,3]  

也被解释为数据[3] - 这也适用于 3 以外的其他值。
使用列表中的最后一个值,其余的被忽略。

这种行为是否有某种意义或目的,还是只是解析器中的意外错误?

我无法找到有关此行为/语法的任何文档或解释。

【问题讨论】:

  • 那么您的目标是什么? -> 数据[1,7,3] = 88;

标签: javascript arrays indexing


【解决方案1】:

您正在使用comma operator

<expr1>, <expr2>, <expr3>, ...

是一个表达式,它从左到右计算每个表达式,并返回最后一个的值。所以1,7,3 计算为3。所以

data[1,7,3] = 88;

相当于:

data[3] = 88;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2016-05-22
    相关资源
    最近更新 更多