好久没有在csdn上写博客了。
今天面试有这样一道题
var length = 10;
var m = function (){
console.log(this.length);
};
obj = {
length: 5,
s:function(fn){
console.log(this.length);
fn();
arguments[0]();
}
};
obj.s(m);
结果是 5,10, 1
第一个输出5很清楚,第二个fn()执行在全局环境下,输出10,
第三个好玩了输出1
arguments的形式是{
0:fn,
1://无
2://无
},所以
arguments[0]();执行在arguments中,输出this.length;所以为1