我正试图围绕这个javascript片段:
(_=[].concat)()[0]
它返回窗口,但为什么?
答案 0 :(得分:1)
将其分解为组件后,更容易理解发生了什么。
您基本上可以将此代码段重写为:
Array.prototype.concat.call(this)[0]
当您调用某个函数时,它会从this
之前的对象获取其.
上下文,因此函数调用object.toString()
将其this
引用设置为{ {1}}。但是,当函数没有包含对象时,其上下文将默认为全局范围,即浏览器中的object
。 window
通常会使用它所调用的现有数组上下文作为基本数组来连接,但在这种情况下concat
是上下文,所以它被强制转换为数组然后连续应用于它,但由于没有提供任何连接,它只返回一个带有上下文的数组,即窗口。