gpt4 book ai didi

javascript - 为什么 x() == window if var x = [].reverse?

转载 作者:搜寻专家 更新时间:2023-11-01 05:12:04 25 4
gpt4 key购买 nike

Google Chrome 中发生了一些看似奇怪的事情:

> var f = [].reverse;
undefined
> f() == window;
true

在 Node.js 上,我得到了不同的结果:

> var f = [].reverse;
undefined
> f() == global;
TypeError: Array.prototype.reverse called on null or undefined

为什么会这样?它与范围界定有关吗?

最佳答案

[].reverse 是对 this 进行操作的函数。

例如,当调用[1,2].reverse()时,this就是那个[1,2]数组,并返回 [2,1]

但是,如果您只是调用 f(),那么您将在没有上下文的情况下调用该函数。在浏览器中,这意味着 window 的默认上下文被传递(除非你处于严格模式),而在服务器上你得到一个错误,基本上告诉你 this未定义。

试试 f.call([1,2])

关于javascript - 为什么 x() == window if var x = [].reverse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com