2013-08-24 37 views
8

我想在接受它之前先評估回調函數。這意味着我需要知道至少接受的argumens的數量 - 如果計數不匹配,我會在控制檯中留下警告。 但我找不到,是否一個JavaScript函數對象有一個屬性,可以幫助我獲取該信息。
所以這可以實現沒有解析函數作爲字符串(不值得)?獲取javascript函數對象的參數個數(甚至是名稱)

回答

18

功能有a length property它告訴你有多少命名爲參數它接受。但請注意,函數可以使用變量來訪問變量,即使它沒有命名它們; length不適合這個(也沒有替代方案)。

function foo(a, b) { 
    for (var i=0;i<arguments.length;i++) { 
     console.log(arguments[i]); 
    } 
} 

console.log(foo.length); // reports 2, even though `foo` can access all your arguments! 
+0

謝謝。有沒有函數對象屬性和方法的完整規範?我找不到一個。 –

+0

@Tomas:我的答案中的鏈接應該提供這個。 – Matt

-3

這是較短的版本 風險價值=功能(){回報[...參數]。長度}