未命名的传递参数未包含在'arguments'对象中

时间:2012-04-12 23:48:23

标签: javascript

我注意到在调试一些Javascript时,我传递的额外参数没有显示在arguments对象中。函数声明有一个命名参数,并且传递了两个参数,但arguments数组只包含第一个参数。当试图在Javascript控制台或jsfiddle中复制问题时,参数总是正确传递。问题是什么?

1 个答案:

答案 0 :(得分:4)

此问题仅在Chrome中发生,似乎是Chrome优化。我最初没有意识到的是,在我发现参数不完整的原始函数中,我正在检查控制台中的arguments,但在我创建的所有测试中,我正在做console.log(arguments)或类似的东西。

如果我在功能中未引用arguments,则Chrome不会以填充它为代价。因此,在通过控制台检查参数时,它仅显示作为命名参数出现的参数。我已经创建了一个jsfiddle来演示这个:http://jsfiddle.net/bgmort/2kmJs/

由于我花了几个小时寻找答案,我希望记录下我发现的内容会为别人节省一点时间。