【发布时间】:2017-10-05 12:43:00
【问题描述】:
我遇到了一个 Javascript 示例,但对理由不太满意,或者对 this 内部函数的范围感到困惑。请看下面的例子:
var length = 10;
function fn() {
console.log(this.length);
}
var obj = {
length: 5,
method: function(fn) {
fn();
arguments[0]();
}
};
obj.method(fn, 1);
第一次记录10 这是可以理解的,因为它是从全局范围调用的。但是第二次记录了2,这让我很困惑。我在寻找答案,这就是我得到的 -
我们知道我们可以在 JavaScript 中访问任意数量的参数 使用 arguments[] 数组的函数。
因此 arguments0 只不过是调用 fn()。现在在 fn 内部, 此函数的范围成为参数数组,并记录 arguments[] 的长度将返回 2
有人对此有更好的答案吗?
【问题讨论】:
标签: javascript logic