Javascript数组-忽略额外的索引值

Javascript Arrays - Ignoring Extra Index Values

本文关键字:索引值 数组 Javascript      更新时间:2023-09-26

在Firefox, Safari和Chrome(没有尝试IE)中使用Javascript,会发生以下奇怪的行为:

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以外的其他值。
使用列表中的最后一个值,其余的将被忽略。

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

我找不到这个行为/语法的任何文档或解释。

您正在使用逗号操作符

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

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

data[1,7,3] = 88;

等价于:

data[3] = 88;