javascript - 为什么在第二次 fn 函数调用期间输出为 2?

标签 javascript logic

我遇到了一个 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 这让我感到困惑。我寻找答案,这就是我得到的 -

We know that we can access any number of arguments in a JavaScript function using the arguments[] array.

Hence arguments0 is nothing but calling fn(). Inside fn now, the scope of this function becomes the arguments array, and logging the length of arguments[] will return 2

有人对此有更好的答案吗?

最佳答案

您调用arguments[0]();

因此,this 的值与arguments 相同。

参数为:fn, 1

有 2 个。

arguments.length 因此为 2

关于javascript - 为什么在第二次 fn 函数调用期间输出为 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585926/

相关文章:

google-sheets - 我想根据 google 表格中的其他两列值对第三列的值进行求和,并且 col1 和 col2 包含多个重复值

python - 为什么在定义时评估默认参数?

android - 如何获取gridview(或RecyclerGridview)的选定项目的所有最近位置

javascript - 如何获得字符偏移 X 和 Y(坐标)

javascript - JQuery UI Datepicker 改变一天的样式

javascript - 将 4 个数字自动制表符填入下一个输入字段后

java - 逐字遍历句子

javascript - 返回页面后缺少滑出div

javascript - $数据刷新超时服务不起作用(Angularjs)

c++ - 如何仅对 10 x 10 矩阵的右四分之一进行排序?