javascript - 为什么 arguments[0]() 这个输出的是 undefined ?
本文介绍了javascript - 为什么 arguments[0]() 这个输出的是 undefined ?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
哪位大神帮我看看,为什么arguments[0]() 这个输出的是 undefined ?
fn()这个会输出10,为什么 arguments[0]() 就是 undefined 呢?
var len = 10;
var obj1 = {
len:6,
method:function(){
console.log(this.len);
}
};
var obj2 = {
len:5,
method:function(fn){
fn();// 这里输出10
arguments[0](); // 这里为什么输出undefined
}
};
obj2.method(obj1.method,obj2.method);
解决方案
arguments[0](); 的 this 绑定的是 arguments。
window['1'] = 'a';
var obj = {
'1' : 'b',
fun : function(){
return this[1];
}
}
function test1(fun, arg){
console.log(fun()); //a,this == undefined, this = window
console.log(arguments[0]()); //c,this = <Object>arguments
}
test1(obj.fun, 'c');
为了避免歧义,再更新一下:
为什么 arguments[0] 和 <参数>fun 指向的函数都一样,结果却不同呢?
这个和 arguments 和 fun 没有关系,因为 arguments 是一个数组,数组也是一个 Object。
({ len:6, method: function(){console.log(this.len);}}).method(); //6
同为 Object 的 Array,this 同样也是指向自身的。
[function(){console.log(this[1]);}, 6][0](); //6
这篇关于javascript - 为什么 arguments[0]() 这个输出的是 undefined ?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文