为什么我不能在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社区具有这种表示法的爆炸声)。

我想念什么?

妮娜·斯科茨(Nina Scholz)

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

var array = [1, 2, 3];

array[-1] = 42;

console.log(array);
console.log(array[-1]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们不能在C ++中进行三向比较?

为什么我不能将“ +1”解析为int?

为什么我不能在此查询中进行任何形式的联接?

为什么$ {1:r}不能在我的zsh脚本中删除文件扩展名?

为什么我不能在Javascript元素集合上使用Array.forEach?

为什么我不能在Stream上进行匹配?

为什么在气泡排序算法中进行n-1次迭代

为什么这个CSS可以进行演示,但不能在我的项目中进行?

为什么不能在2D向量中进行push_back?C ++

为什么我不能在PS1中使用$(...)而不是反引号?

为什么我不能在C ++的map的迭代器中使用+1?

为什么这种方法调用不能在原型中进行?

为什么我不能在C中仅使用1个相等运算符来检查多个条件?

为什么我不能执行ls -a 1>&-?

为什么我不能`tail -f / proc / $ pid / fd / 1`?

为什么我不能在Excel 2010中的MAX()中进行数学运算?

为什么不能在VMware Workstation下访问虚拟终端tty1?

为什么我不能做1.toString()但我可以做var a = 1; a.toString()

为什么我不能在Windows 7 Professional 64位SP1上安装SQL Server Express 2016?

为什么我们不能在不增加偏差或将其转换为2或1的补码的情况下存储IEEE浮点数的指数?

为什么我不能在bash登录外壳中更改PS1?

为什么我不能在 reactJs onClick 中返回 h1 元素

为什么我不能在 iText7 中的 PKCS7.detached 之前使用 SHA1?

为什么我们不能在下面的代码中为字符串 s1 提供输入?

为什么我不能制作对象m1?

GNU Make:为什么不能在简单的扩展变量上使用调用函数?$1 未展开

为什么我不能将我的图像数据集拆分为 8:1:1?

为什么我不能使用函数在 javascript 中进行碰撞检查?

为什么我不能在 css 中对图像进行过渡?