繁体   English   中英

获取函数参数名称而不调用函数?

[英]Get function parameter names without calling the function?

我知道我可以像这样调用它而获得函数的String表示形式

function storeData(id, data) { console.log("Doing stuff..") };
storeData.toString(); //"function storeData(id, data) { console.log("Doing stuff..") }"

从理论上讲,我可以解析生成的String来提取变量名。 有任何编写该代码的使用者吗? 有更容易的方法吗? (我不必担心缩小)

尝试使用以下代码:

  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 []

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM