2011-09-20 82 views
0

我想简单地检测到当前方法有哪些参数,所以我在铬开发工具中调用参数,而我暂停执行该方法。但是参数返回[]空数组。但是,如果我尝试在函数内部放置一些参数,所以这次参数和参数被填充。这个没有任何问题吗?调试JavaScript方法参数

例子:

function(){ 
    console.log(arguments);//value is [] 
} 

function(a,b,c){ 
    console.log(arguments);//value is not not empty array. It contains few parameters. 
} 

我不明白,这怎么可能呢?

编辑:

现在我检查它和它的作品,但让我告诉你,当它不能正常工作。

我只是使用调试器,然后打开控制台并写入参数并输入。结果是[]但如果我在函数中使用参数,我发现它被正确填充。那么为什么在控制台产品[]结果中引用参数呢?

+0

你怎么称呼这些功能?当你发布他们时,你不会给他们打电话,也不会提及他们。 – pimvdb

+0

我们在这里是否缺少一些代码?参数定义在哪里? –

+1

@ElRonnoco - 'arguments'是ecmascript的一部分。 –

回答

4

很抱歉,如果这不回答你的问题......这是一个很难理解您的实际问题是什么...

如果你试图找到多少个参数的函数预期,那么你可以使用.length

f0 = function() { }; 
f1 = function (a) { }; 
f2 = function (a, b) { }; 

f0.length; // 0 
f1.length; // 1 
f2.length; // 2 

来源:http://es5.github.com/#x15.3.5.1


如果您尝试查找函数收到多少个参数,则可以使用arguments.length。请注意,它与预期参数的数量无关。

f = function() { 
    return arguments.length; 
}; 

f();  // 0 
f(1); // 1 
f(1, 1); // 2 
+0

我指着第二 – AnyOne