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

2016-10-26 19:31发布

哪位大神帮我看看,为什么arguments[0]() 这个输出的是 undefined ?

    var len = 10;     var obj1 = {         len:6,         method:function(){             console.log(this.len);         }     };     var obj2 = {         len:5,         method:function(fn){             console.log(fn);// obj1.method             fn();             console.log(arguments[0]);             arguments[0](); // undefined         }     };      obj2.method(obj1.method,obj2.method);
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答

因为arguments[0]()调用的是obj1.method, 而obj1.method的function你没有return值。 函数没有写return时,默认返回undefined. 给obj1.method return个值arguments[0]();就不会是undefined了

this和定义无关,和函数的调用方式有关。把函数当成参数传入,调用的时候直接调用,里面的this就是全局对象。

一周热门 更多>