var length = 10;function fn() { console.log(this.length);}var obj = { length: 5, method: function(fn) { fn(); arguments[0](); }};obj.method(fn, 1);为什么输出时10 2?
1 回答
stone310
TA贡献361条经验 获得超191个赞
第一个10很好理解,因为是个自执行匿名函数,所以this指向window;
第二个 arguments[0](),这里arguments[0]也是fn,但是arguments是个类数组,而这里这里arguments[0]意思就是在arguments这个类数组上选取第1个值,因此第一个值虽然也是fn,但它的执行环境变了,就是arguments这个类数组,因此this.length为2(2个参数)
添加回答
举报
0/150
提交
取消