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

为什么 arguments[0]() 这个输出的是 undefined ?

为什么 arguments[0]() 这个输出的是 undefined ?

幕布斯7119047 2018-09-06 12:09:28
哪位大神帮我看看,为什么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);
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

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


查看完整回答
反对 回复 2018-10-26
  • 1 回答
  • 0 关注
  • 995 浏览
慕课专栏
更多

添加回答

举报

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