如何查询javascript函数的参数而不调用它

时间:2017-02-22 14:27:00

标签: javascript function introspection

给定命令队列,如下所示。 。

var commandQueue = [
        function() {thing(100, 0, shiftFunc)},
        function() {thing(100, 233, shiftFunc)},
        function() {thing(100, 422, shiftFunc)}
];

如何编写一个以commandQueue为参数的函数,并将第二个参数(index [1])的总和返回给队列中的函数而不调用队列中的函数?

3 个答案:

答案 0 :(得分:6)

您可以使用Function#toString和正则表达式,搜索第一个和第二个逗号之间的值。



var commandQueue = [
        function() {thing(100, 0, shiftFunc)},
        function() {thing(100, 233, shiftFunc)},
        function() {thing(100, 422, shiftFunc)}
];

console.log(commandQueue.reduce(function (r, a) {
     return r + +((a.toString().match(/,\s*(\d+),/) || [])[1] || 0);
}, 0));




答案 1 :(得分:1)

不幸的是,这是不可能的。 JavaScript无法查看函数定义。

答案 2 :(得分:1)

您可以稍微重写一下,然后使用map

function thing(a, b) {
  return Math.pow(a * b, 2);
}
var commandQueue = [
  function() {
    return thing(100, 0);
  },
  function() {
    return thing(100, 233) % 6;
  },
  function() {
    return thing(100, 422) % 6;
  }
];
var commandResults = commandQueue.map(function(a) {
  return a();
});
console.log(commandResults);