原代码
逛社区时看到一段有关this指向的问题,在arguments[0]()
这里有些不懂,代码如下:
var length = 1
function fn() {
console.log(this.length)
}
const person = {
length: 2,
say(fn) {
fn()
arguments[0]()
}
}
person.say(fn, 1, 2)
不理解时认为person.say(fn, 1, 2)
执行fn()
时,this指向的是window,所以控制台输出1,而arguments[0]
应该也是this指向window的fn()
,和第一个一样,所以输出1,事实上结果是1,3
在arguments[0]
中fn指向的是arguments,而不是window,可以理解为arguments.0()
,这样的话就方便理解this的指向了。