为什么 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);


幕布斯7119047
浏览 996回答 1
1回答

蓝山帝景

arguments[0](); 的 this 绑定的是 arguments。window['1']&nbsp;=&nbsp;'a';var&nbsp;obj&nbsp;=&nbsp;{&nbsp;&nbsp;&nbsp;'1'&nbsp;:&nbsp;'b',&nbsp;&nbsp;&nbsp;&nbsp;fun&nbsp;:&nbsp;function(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this[1]; &nbsp;&nbsp;&nbsp;&nbsp;} } function&nbsp;test1(fun,&nbsp;arg){ &nbsp;&nbsp;&nbsp;&nbsp;console.log(fun());&nbsp;&nbsp;&nbsp;&nbsp;//a,this&nbsp;==&nbsp;undefined,&nbsp;this&nbsp;=&nbsp;window &nbsp;&nbsp;&nbsp;&nbsp;console.log(arguments[0]());&nbsp;&nbsp;&nbsp;&nbsp;//c,this&nbsp;=&nbsp;<Object>arguments} test1(obj.fun,&nbsp;'c');为了避免歧义,再更新一下:为什么 arguments[0] 和 <参数>fun 指向的函数都一样,结果却不同呢?这个和 arguments 和 fun 没有关系,因为 arguments 是一个数组,数组也是一个 Object。({&nbsp;len:6,&nbsp;method:&nbsp;function(){console.log(this.len);}}).method();&nbsp;//6同为 Object 的 Array,this 同样也是指向自身的。[function(){console.log(this[1]);},&nbsp;6][0]();&nbsp;//6
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript