这个新版本还处理粗箭头功能......
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 将是 test 参数名称的数组,即 ['a', 'b', 'c']
值为 args 将是参数名称的数组,如果ftest
是一个函数。
数组将为空,如果ftest
没有参数。的价值args
将null
if ftest
正则表达式匹配失败,即它不是一个函数。