【翻译】`at`将加入ECMAScript

144 阅读2分钟

如果你是个js开发者,你看你经常使用数组。它是语言中最基本的数据结构

事实上,正因为它太过基础,过去的几年里数组的 prototype 迅速扩充,添加了诸如flatfilter等方法,并且还在继续增加。

访问器

为了方位一个数组中的元素,你需要知道它的下标,JavaScript中的下标是从0开始的,因此第一个元素的下标是0.

const arr = ['a', 'b', 'c', 'd']
arr[0] // this is "a"
arr[2] // this is "c"

正如你在上面的例子中看到的,你可以访问到第一个或者第三个元素。但是最后一个呢?在其他语言中,你可以通过类似这样的代码:

const arr = ['a', 'b', 'c', 'd']
arr[-1] // This is NOT "d"

但是在JavaScript中不行!真的不行吗?... 现在-1已经是一个合法的key了。数组实际上是将index作为key的对象,因此arr[-1]是在查询arr对象的 "-1"key上的值,该值为undefined

最后一个元素

那么我们该如何不适用最后一个元素的下标就可以访问到它呢?的确有办法做到,但是它显然有些冗长:你可以使用length查找

arr[arr.length - 1] // this is "d"

你也可以使用slice

arr.slice(-1)[0] // this is "d"

AT

这就是at加入到JavaScript的原因。你能够用这样的写法代替上面的做法

arr.at(-1) // this is "d"

at最棒的一点是,你再也不需要使用方括号了。

arr.at(0) // this is still "a"

如果传入了不合法的下标会怎样?

arr.at(5) // this is undefined

看上去各种写法的容忍度很高。

历史插曲

其实以前提出过类似的itemapi,但是它因为与主流的库冲突而不被web兼容。因此at成为当前的提案。

你愿意用它吗?

这个提案已经被官方采纳了,并且将会成为ES2022的一部分。能预见到它将会成为对访问数组元素非常友好的语法糖。

原文:laurieontech.com/posts/at-pr…