You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Lighthouse将Array.isArray标记为Legacy JavaScript?

关于Array.isArray被PageSpeed标记为「Legacy JavaScript」的解答

为什么Array.isArray会被标记?

Array.isArray本身并没有过时,它是ES5标准引入的API,所有现代浏览器都原生支持。PageSpeed标记它为Legacy,几乎都是因为你的代码里包含了针对旧浏览器的**兼容垫片(polyfill)**或者封装函数。

比如早年为了支持IE8及更早版本,开发者常会写这样的兼容代码:

// 针对旧浏览器的Array.isArray垫片
if (!Array.isArray) {
  Array.isArray = function(arg) {
    return Object.prototype.toString.call(arg) === '[object Array]';
  };
}

对现代浏览器来说,这段代码完全是冗余的Legacy代码,所以会被PageSpeed检测出来并标记。

Array.isArray是否过时?

完全没有过时,它是目前判断一个值是否为数组的最可靠标准方法。相比instanceof Array,它能正确处理跨窗口/iframe的数组实例(这类场景下instanceof会因为原型链问题失效,而Array.isArray依然有效)。

优化方案

如果是垫片代码导致的标记,最优处理方式是:

  • 若你仍需要兼容旧浏览器,通过Babel、core-js等工具的配置,仅向不支持Array.isArray的浏览器注入垫片,现代浏览器直接使用原生API。
  • 若不需要兼容IE8及更早版本,直接删除所有相关的兼容垫片代码即可。

如果是极罕见的误报,可忽略该提示,或检查代码中是否有其他封装Array.isArray的Legacy逻辑。

内容的提问来源于stack exchange,提问作者David Min

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:05:34