Google chrome 有没有办法让Chrome在'arguments'中包含未声明的参数?

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() {

通常在Javascript中,如果从函数内部引用“magic”
参数
变量,它将包含传递给函数的所有参数。但在Chrome开发者工具(Linux上)中,这并没有发生;如果你:

  • debugger
    语句添加到没有任何声明参数的函数中
  • 用一个参数触发该函数
  • 当Chrome暂停在
    调试器
    行时,从控制台检查
    参数
  • 您将看到
    参数
    为空。现在,只要在函数上声明参数就可以很容易地解决这个问题;换句话说,如果您这样做:

    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。谢谢你的信息;不得不等待有点烦人,但它正在被修复,这很好:-)谢谢你的信息;不得不等待有点烦人,但它正在得到修复,这很好:-)