2017-03-20 34 views
4

如果使用Function.length屬性,則會得到函數所需的參數總數。獲取函數參數長度,包括默認參數

但是,根據文檔(以及實際嘗試),它不包括計數中的默認參數。

這個數字不包括其他參數,並只包括第一個具有缺省值 - Function.length

前參數是否有可能,我以某種方式得到一個數(從功能外),其中包括默認參數?

+0

看看這個:https://github.com/tunnckocore/parse-function –

+2

一般來說是更好專注於您嘗試解決這類問題的問題。文檔清楚地陳述真相,數字不暴露,所以現在答案只是「不」,而如果你解釋了你想要做的事情,人們將能夠更有效地指導你。 – loganfsmyth

+1

你不應該依賴'Function.length'。爲什麼?因爲你會遇到麻煩 - 就像它已經發生一樣。 – ftor

回答

2

也許你可以自己解析它,像:

function getNumArguments(func) { 
 
    var s = func.toString(); 
 
    var index1 = s.indexOf('('); 
 
    var index2 = s.indexOf(')'); 
 
    return s.substr(index1 + 1, index2 - index1 - 1).split(',').length; 
 
} 
 

 
console.log(getNumArguments(function(param1, param3 = 'test', ...param2) {})); //3

+0

當您在默認的初始化程序中擁有一個函數(或帶逗號的括號)時,這不起作用 – Bergi