关于arguments的使用

来源:16-1 作用域和闭包-执行上下文

美乐居士

2019-09-09

var length = 10;
function fn() {
  console.log(this.length);
}

var obj = { 
  method: function(fn) {
    fn();
    arguments[0]();
  }
};

obj.method(fn, 1); 

输出:10,2
请问老师,这里的2是怎么取得输出的

写回答

2回答

双越

2019-09-10

var length = 10;

function fn() {

  console.log(this.length);

}

var obj = { 

  method: function(fn) {

      console.log('arguments[0]...', arguments[0])   

      console.log('arguments.length...', arguments.length)

      arguments[0](); // 执行函数会打印 this.length ,值即上一行的 arguments.length

  }

};

obj.method(fn, 1); 


看我加的两行 console.log 和一行注释吧,应该就能明白了。

0
1
美乐居士
get,谢谢老师
2019-09-10
共1条回复

双越

2019-09-09

“arguments0;”—— 这里是不是写错了?我是不太理解这种写法

你先把代码格式化一下吧,参考 http://coding.imooc.com/learn/questiondetail/141504.html 这种格式化形式

0
3
美乐居士
回复
双越
老师,我问题那里重新格式代码和上传运行截图了,麻烦您重新看下,有输出10和2
2019-09-10
共3条回复

BAT大牛带你横扫初级前端JavaScript面试(第二版)

BAT高级前端工程师亲授,结合真实面试题,提高面试成功几率

4268 学习 · 817 问题

查看课程