小编Pan*_*kla的帖子

为什么这个行为的JavaScript代码?

最近有一位朋友问我以下代码的输出

var length = 10;

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

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

obj.method(fn, 1);
Run Code Online (Sandbox Code Playgroud)

我认为答案是10 10,但令人惊讶的是第二次调用,即arguments[0]();值为2,这是传递的参数的长度.换句话说,它似乎arguments[0]();已被转换为fn.call(arguments);.

为什么会这样?是否存在此类行为的链接/资源?

javascript

26
推荐指数
2
解决办法
1134
查看次数

标签 统计

javascript ×1