我有一个关于Array.at()
方法的问题,这个方法在 Array.prototype.at() - MDN中介绍。它似乎比使用方括号标记arr[i]
更加实用,因为它提供了指定从数组末尾开始的索引的选项,例如:arr.at(-1)
将返回arr
数组中的最后一个成员。此外,它似乎更适合于方法链式调用。切换到这种方法是否有任何缺点呢?
我有一个关于Array.at()
方法的问题,这个方法在 Array.prototype.at() - MDN中介绍。它似乎比使用方括号标记arr[i]
更加实用,因为它提供了指定从数组末尾开始的索引的选项,例如:arr.at(-1)
将返回arr
数组中的最后一个成员。此外,它似乎更适合于方法链式调用。切换到这种方法是否有任何缺点呢?
这种方法有一些缺点:
.at
可能会使一些人感到困惑(并导致他们不得不查找)。这并不意味着您不应该使用它,但这是要牢记的一点。.at
的人的意思 - 而且问题似乎是从代码库的角度出发的。例如,很多人在2015年对箭头函数感到困惑。 - CertainPerformance另一个缺点是代码可以重新定义此函数。这可能会带来安全隐患。
Array.prototype.at = () => console.log("");
Array.prototype.at
的代码也可以重新定义您的代码。安全问题不在于恶意代码修改.at
,而在于它首次如何进入您的浏览器。有人如何能够修改您的原型? - Antoni Silvestrovič我不会将它列为一个缺点,但是新的开发人员可能不明白Array.prototype.at()
仅用于检索。它不能用于赋值,而array[array.length-1]
可以。
我想只有改进。类似于 Python 代码,JS 现在可以使用索引 -1 来查看数组的最后一个元素。
a = [1,2,3]
a[a.length-1] # 3
或者
a.at(-1) #3
foo[n].someFn()
和foo.at(n).someFn()
之间有任何实质性的区别(除了额外的字符)。真正的优势只在于at(-1)
,而据我所知,它也可以折叠成方括号语义。 - Dave Newtonarr.at(-2)
而不是arr[length-2]
。 - Reza Saadati