0

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

4

1 回答 1

4

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

如果我不在arguments函数中引用,Chrome 不会以填充它为代价。因此,当通过控制台检查参数时,它只显示作为命名参数存在的参数。我创建了一个 jsfiddle 来证明这一点:http: //jsfiddle.net/bgmort/2kmJs/

由于我花了几个小时来寻找这个问题的答案,我希望记录我的发现可以为其他人节省一点时间。

于 2012-04-12T23:53:49.627 回答