为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

青春有我 2019-04-16 17:05:42
javascriptvarlength=10;functionfn(){console.log(this.length);}varobj={length:5,method:function(fn){fn();arguments[0]();}};obj.method(fn,1);
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

输出:102
第一次输出10应该没有问题。我们知道取对象属于除了点操作符还可以用中括号,所以第二次执行时相当于arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。
                            
查看完整回答
反对 回复 2019-04-16
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

你这段代码,在第三行加一行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啦
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 387 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信