Javascript 在不调用函数的情况下获取函数参数名?
我知道我可以得到函数的字符串表示形式,而不用像这样调用它Javascript 在不调用函数的情况下获取函数参数名?,javascript,function,parameters,Javascript,Function,Parameters,我知道我可以得到函数的字符串表示形式,而不用像这样调用它 function storeData(id, data) { console.log("Doing stuff..") }; storeData.toString(); //"function storeData(id, data) { console.log("Doing stuff..") }" 理论上,我可以解析得到的字符串来提取变量名。有人愿意写那个代码吗?有没有更简单的方法?(我不需要担心缩小)尝试使用以下代码: var
function storeData(id, data) { console.log("Doing stuff..") };
storeData.toString(); //"function storeData(id, data) { console.log("Doing stuff..") }"
理论上,我可以解析得到的字符串来提取变量名。有人愿意写那个代码吗?有没有更简单的方法?(我不需要担心缩小)尝试使用以下代码:
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var ARGUMENT_NAMES = /([^\s,]+)/g;
function getParamNames(func) {
var fnStr = func.toString().replace(STRIP_COMMENTS, '');
var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);
if (result === null)
result = [];
return result;
}
getParamNames(getParamNames) // returns ['func']
getParamNames(function (a, b, c, d) { }) // returns ['a','b','c','d']
getParamNames(function (a,/*b,c,*/d) { }) // returns ['a','d']
getParamNames(function () { }) // returns []
你想解决的问题是什么?正如Pointy(哈哈,我忍不住)所指出的,这看起来像是一个案例。我正在尝试创建一个GUI,它允许人们通过在输入框中输入参数然后用按钮调用函数来调用函数。最好向用户显示输入的名称。但是,这很难,因为函数是任意的。在运行时以编程方式获取函数名很容易,因为它们是对象的属性,我可以使用(for..in)检查对象键,但我还需要参数名。@JacqueGoupil,你说得对,这是重复的。道歉。我将标记关闭/删除。