我注意到在调试一些Javascript时,我传递的额外参数没有显示在arguments
对象中。函数声明有一个命名参数,并且传递了两个参数,但arguments数组只包含第一个参数。当试图在Javascript控制台或jsfiddle中复制问题时,参数总是正确传递。问题是什么?
答案 0 :(得分:4)
此问题仅在Chrome中发生,似乎是Chrome优化。我最初没有意识到的是,在我发现参数不完整的原始函数中,我正在检查控制台中的arguments
,但在我创建的所有测试中,我正在做console.log(arguments)
或类似的东西。
如果我在功能中未引用arguments
,则Chrome不会以填充它为代价。因此,在通过控制台检查参数时,它仅显示作为命名参数出现的参数。我已经创建了一个jsfiddle来演示这个:http://jsfiddle.net/bgmort/2kmJs/
由于我花了几个小时寻找答案,我希望记录下我发现的内容会为别人节省一点时间。