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

为何Array.from()在不同网页执行会得到不同结果?

为什么相同的Array.from代码在不同页面结果不同?

这是因为你访问的那个fellowshipone门户页面重写了全局的Array.from方法,覆盖了JavaScript的原生实现,导致它不再遵循标准的API行为。

具体原因拆解:

  • 原生的Array.from方法支持第二个参数作为映射函数,会遍历源数组的每个元素,将函数执行后的结果组成新数组返回——这也是你在MDN页面得到[2, 4, 6]的原因。
  • 而该网站自定义的Array.from应该是忽略了第二个映射参数,只是简单地把源数组复制后返回,所以你执行Array.from([1,2,3], x => x+x)时,完全没触发映射逻辑,直接得到了原数组的拷贝[1,2,3]。

验证方法:

你可以在该页面的Chrome控制台执行以下代码,确认是不是被重写了:

console.log(Array.from.toString())
  • 如果是原生方法,输出会是function from() { [native code] };
  • 如果是网站自定义的,会显示具体的函数实现代码,能看到它没有处理第二个参数的逻辑。

这种修改原生对象方法的操作叫“猴子补丁”,有些网站会为了兼容旧浏览器或者实现特定业务逻辑这么做,但也容易引发这类不符合预期的API行为问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:54