Javascript 未包含在';参数';对象
在调试一些Javascript时,我注意到我传递的额外参数没有显示在Javascript 未包含在';参数';对象,javascript,Javascript,在调试一些Javascript时,我注意到我传递的额外参数没有显示在arguments对象中。函数声明有一个命名参数,并传递了两个参数,但参数数组仅包含第一个参数。当试图在Javascript控制台或JSFIDLE中复制问题时,参数始终正确传递。问题可能是什么?这个问题只发生在Chrome上,似乎是Chrome的优化。起初我没有意识到的是,在我发现参数不完整的原始函数中,我在控制台中检查参数,但在我创建的所有测试中,我都在执行console.log(arguments)或类似的操作 如果我没有在
arguments
对象中。函数声明有一个命名参数,并传递了两个参数,但参数数组仅包含第一个参数。当试图在Javascript控制台或JSFIDLE中复制问题时,参数始终正确传递。问题可能是什么?这个问题只发生在Chrome上,似乎是Chrome的优化。起初我没有意识到的是,在我发现参数不完整的原始函数中,我在控制台中检查参数
,但在我创建的所有测试中,我都在执行console.log(arguments)
或类似的操作
如果我没有在函数中引用参数
,Chrome不会花费填充它的费用。因此,当通过控制台检查参数时,它只显示作为命名参数存在的参数。我创建了一个JSFIDLE来演示这一点:
因为我花了几个小时寻找答案,我希望记录我的发现能为其他人节省一点时间。这个问题只发生在Chrome上,似乎是Chrome的优化问题。起初我没有意识到的是,在我发现参数不完整的原始函数中,我在控制台中检查
参数
,但在我创建的所有测试中,我都在执行console.log(arguments)
或类似的操作
如果我没有在函数中引用参数
,Chrome不会花费填充它的费用。因此,当通过控制台检查参数时,它只显示作为命名参数存在的参数。我创建了一个JSFIDLE来演示这一点:
因为我花了几个小时寻找这个问题的答案,我希望记录我发现的东西能为其他人节省一点时间。太好了!自从我发布这篇文章以来,我还注意到Chrome同样不存储任何闭包变量(我指的是在封闭范围内定义的变量),除非它们在该范围内被引用。当然不包括全局变量。太好了!自从我发布这篇文章以来,我还注意到Chrome同样不存储任何闭包变量(我指的是在封闭范围内定义的变量),除非它们在该范围内被引用。当然,不包括全局变量。