2013-04-03 67 views
1

通常在Javascript中,如果您从函数内引用“魔术”arguments变量,它将包含传递给该函数的所有参数。尽管如此,在Chrome开发人员工具(在Linux上),这并没有发生;如果您:有没有办法让Chrome在`arguments`中包含未声明的参数?

  1. 添加debugger语句一些功能没有任何声明的参数
  2. 做些事情来触发与一个参数,函数
  3. 当Chrome浏览器上的debugger线停顿,从检查arguments控制台。

您会看到arguments为空。现在,只需在函数中声明参数就可以很容易地解决这个问题。换句话说,如果你这样做:

function(a,b,c) { 
    debugger; 
} 

代替:

function() { 
    debugger; 
} 

arguments有参数(或至少前三)。

但是,这真的不应该是必要的,这导致我的问题:是否有任何设置我可以改变,或者有什么我可以做的,以解决这种行为,只是让Chrome把每次传入参与到arguments,而不只是宣布的?

+0

可能是'debugger' statemant打破了你的currient范围。无论如何,奇怪。 – rekire 2013-04-03 18:55:02

+0

这是非常可能的:如果我'console.log(arguments)'而不是使用'debugger',那么会记录正确的参数(即使它们未声明),所以这看起来特定于'调试器'。 – machineghost 2013-04-03 20:16:17

+1

你也可以说var keep = arguments; – 2013-06-12 19:59:19

回答

1

这个最近已经在V8 JavaScript引擎中重做。不久它将进入Chrome代码库,最终将进入稳定版本(可能是28. 。*?)。

+0

感谢您的信息;有点烦,不得不等待,但它是固定的,这太好了.-) – machineghost 2013-04-05 18:55:35

相关问题