Google chrome 有没有办法让Chrome在'arguments'中包含未声明的参数?
通常在Javascript中,如果从函数内部引用“magic”Google chrome 有没有办法让Chrome在'arguments'中包含未声明的参数?,google-chrome,arguments,google-chrome-devtools,Google Chrome,Arguments,Google Chrome Devtools,通常在Javascript中,如果从函数内部引用“magic”参数变量,它将包含传递给函数的所有参数。但在Chrome开发者工具(Linux上)中,这并没有发生;如果你: 将debugger语句添加到没有任何声明参数的函数中 用一个参数触发该函数 当Chrome暂停在调试器行时,从控制台检查参数 您将看到参数为空。现在,只要在函数上声明参数就可以很容易地解决这个问题;换句话说,如果您这样做: function(a,b,c) { debugger; } 而不是: function() {
参数
变量,它将包含传递给函数的所有参数。但在Chrome开发者工具(Linux上)中,这并没有发生;如果你:
debugger
语句添加到没有任何声明参数的函数中调试器
行时,从控制台检查参数
参数
为空。现在,只要在函数上声明参数就可以很容易地解决这个问题;换句话说,如果您这样做:
function(a,b,c) {
debugger;
}
而不是:
function() {
debugger;
}
参数
将具有参数(或至少前三个)
然而,这真的不必要,这就引出了我的问题:是否有任何设置我可以更改,或者是否有任何其他我可以做的事情来修复此行为,并使Chrome将传入的每个参数都放入到
参数中,而不仅仅是声明的参数中?最近在V8 JavaScript引擎中重新进行了此操作。很快,它将进入Chrome代码库,最终将进入稳定版本(可能是28…*?)。最近在V8 JavaScript引擎中重做了这一点。很快,它将进入Chrome代码库,最终将进入稳定版本(可能是28…*?)。可能是调试器
状态打破了您当前的范围。无论如何都很奇怪。这很有可能:如果我console.log(arguments)
而不是使用debugger
,那么会记录正确的参数(即使它们未声明),因此这似乎是特定于debugger
。您也可以说var keep=arguments;这也行得通,谢谢@Lincoln B。debugger
statemant可能会破坏您当前的作用域。无论如何都很奇怪。这很有可能:如果我console.log(arguments)
而不是使用debugger
,那么会记录正确的参数(即使它们未声明),因此这似乎是特定于debugger
。您也可以说var keep=arguments;这也行,谢谢@Lincoln B。谢谢你的信息;不得不等待有点烦人,但它正在被修复,这很好:-)谢谢你的信息;不得不等待有点烦人,但它正在得到修复,这很好:-)