【7.27】V8 release v9.2 at method

445 阅读1分钟

每六周,v8引擎总是会做一些小更新,这些更新总是能成为新闻~

这个是 9.2 版本的更新,会随着 chrome 92,一起发布,目前已经在 firefox 和 babel 支持

9.2 版本为 Array、各种 TypedArray、String 的原型上,新增了 at 方法,便于从尾部访问元素,v8.dev/features/at…

在这个特性出来之前,从尾部访问元素会比较麻烦

const arr = [1, 2, 3, 4, 5]

// 访问倒数第二个元素 4
arr[arr.length - 2];  // 方式1
arr.slice(-2)[0];     // 不考虑性能的方式

// 使用 at 就很方便,at 也同时支持正数
arr.at(-2)

at 方法的实现也很简单

function at(n) {
    // 粗暴的去掉小数点后面的内容,把他转化为整数
    n = Math.trunc(n) || 0;
    // 如果是负数,变为正数
    if(n < 0) n+= this.length;
    // 如果越界访问,返回 undefined
    if(n < 0 || n > this.length) return undefined;
    // 返回之间通过数组下标取的结果
    return this[n];
}

// 试一下
Array.prototype.at = at;
const arr = [1, 2, 3];
arr.at(-2);  // 2
arr.at(-8);  // undefined
arr.at(-2.34);  // 2

还有一个更新是 Shared Pointer Compression Cage,想要了解可以看下面的文档~

v8.dev/blog/v8-rel…