首页 > 解决方案 > Js 函数参数

问题描述

当我在控制台上运行此代码时,其结果是undefined

(function test (arguments) {
  console.log(arguments[0]);
})(100);

但是当我改变argumentsa的结果是100

(function test (a) {
  console.log(arguments[0]);
})(100);

为什么?我用谷歌搜索并阅读了MDN,但无法弄清楚为什么第一个是未定义的,第二个是 100。

标签: javascriptfunctionarguments

解决方案


arguments是一个标准的 JavaScript 变量,当你调用它时它会在函数的范围内初始化。它保存函数调用的参数。

在第一个片段中,您通过拥有自己的arguments变量(不是数组)来覆盖该行为。你正试图[0]摆脱它,那就是undefined

第二个片段工作得很好,因为 JS 能够arguments正常获取变量。


推荐阅读