【问题标题】:Why does this expression return true? [duplicate]为什么这个表达式返回 true? [复制]
【发布时间】:2010-02-20 11:10:41
【问题描述】:

可能重复:
Can somebody explain this Javascript method ?

(x = [].reverse)() === window // true

知道为什么吗?

【问题讨论】:

标签: javascript duplicates


【解决方案1】:

(x=[].reverse)() === window // true

一开始没看懂这个,不过我猜很简单:先x变成数组的逆函数,然后用this === window调用。所以它等于window.reverse()。刚刚查了一下,reverse() 可以正常工作,所以window.reverse() === window - 虽然它可能与以前不同。

我从这个链接得到了这个答案

http://news.ycombinator.com/item?id=1122004

【讨论】:

  • 至少链接到你从news.ycombinator.com/item?id=1122004得到它的地方
  • 没错。 (x=[].reverse)() 等价于Array.prototype.reverse.call(null),这意味着this for reverse 将是全局对象,即window
  • @ratty:我引用了你的答案。因为它是用第一人称写的,所以我很困惑,以为是你写的,直到我点击你的链接并看到它是直接复制/粘贴。
  • @vava:确实。也许最有趣的是没有抛出类型错误,所以reverse 实际上并没有检查它是否在数组上被调用。
  • çağdaş:你为什么要指责他没有链接到他得到答案的地方,而不是因为没有链接到他得到问题的地方而对 OP 做同样的事情?问题和答案一样都是内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 2019-04-20
  • 1970-01-01
  • 2021-11-10
  • 2013-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多