Эта новая версия также поддерживает функции жирной стрелки ...
args = f => f.toString ().replace (/[\r\n\s]+/g, ' ').
match (/(?:function\s*\w*)?\s*(?:\((.*?)\)|([^\s]+))/).
slice (1,3).
join ('').
split (/\s*,\s*/);
function ftest (a,
b,
c) { }
let aftest = (a,
b,
c) => a + b / c;
console.log ( args (ftest), // = ["a", "b", "c"]
args (aftest), // = ["a", "b", "c"]
args (args) // = ["f"]
);
Вот то, что я думаю, вы ищете:
function ftest (a,
b,
c) { }
var args = ftest.toString ().
replace (/[\r\n\s]+/g, ' ').
match (/function\s*\w*\s*\((.*?)\)/)[1].split (/\s*,\s*/);
args будет массивомимена аргументов теста, т. е. ['a', 'b', 'c']
Значение args будет массивом имен параметров, если ftest
является функцией.Массив будет пустым, если ftest
не имеет параметров.Значение args
будет null
, если ftest
не сможет соответствовать регулярному выражению, т. Е. Это не функция.