为什么我不能在JavaScript中进行array [-1]?


问题内容

在Python中,您可以这样做:

arr = [1,2,3]
arr[-1] // evaluates to 3

但是在JS中,您不能:

let arr = [1,2,3];
arr[-1]; // evaluates to undefined

问题是: 为什么?

我知道解决它的技巧(arr[arr.length-1]修改数组原型等),但这不是重点。

我试图理解为什么EcmaScript标准中仍然没有将负数组索引解释为从末尾开始的索引,尽管实现理解这一点的JS引擎似乎很容易(而且整个Python社区也是具有这种表示法的爆炸声)。

我想念什么?


问题答案:

您错过了要点,即数组是对象( 奇异对象 ),并且-1是有效键。

var array = [1, 2, 3];



array[-1] = 42;



console.log(array);

console.log(array[-1]);