这段js代码的输出结果说什么?

javascriptvarlength=10;
functionfn(){
console.log(this.length);
}
varobj={
length:5,
method:function(fn){
fn();
arguments[0]();
}
};
obj.method(fn,1);
青春有我
浏览 388回答 2
2回答

阿晨1998

输出:102第一次输出10应该没有问题。我们知道取对象属于除了点操作符还可以用中括号,所以第二次执行时相当于arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。

30秒到达战场

你这段代码,在第三行加一行console.log(this)就知道为什么了。如下jsvarlength=10;functionfn(){console.log(this.length);}varobj={length:5,method:function(fn){fn();arguments[0]();}};obj.method(fn,1);在执行arguments[0]的时候this上下文已经变成arguments啦
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript