如何在不调用javascript函数的情况下查询该函数的参数

如何在不调用javascript函数的情况下查询该函数的参数,javascript,function,introspection,Javascript,Function,Introspection,给定如下所示的命令队列 var commandQueue = [ function() {thing(100, 0, shiftFunc)}, function() {thing(100, 233, shiftFunc)}, function() {thing(100, 422, shiftFunc)} ]; 如何编写一个函数,将commandQueue作为参数,并将第二个参数(索引[1])的总和返回给队列中的函数,而不调用队列中的函数?不幸的是

给定如下所示的命令队列

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

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

不幸的是,这是不可能的。JavaScript不提供查看函数定义内部的功能。

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

函数事物(a,b){
返回Math.pow(a*b,2);
}
var commandQueue=[
函数(){
返回物(100,0);
},
函数(){
归还物(100233)%6;
},
函数(){
归还物(100422)%6;
}
];
var commandResults=commandQueue.map(函数(a){
返回a();
});
console.log(commandResults)可以使用和正则表达式,搜索第一个和第二个逗号之间的值

var命令队列=[
函数(){thing(100,0,shiftFunc)},
函数(){thing(100233,shiftFunc)},
函数(){thing(100422,shiftFunc)}
];
console.log(commandQueue.reduce)(函数(r,a){
返回r++(a.toString().match(/,\s*(\d+,/)| |[])[1]| | 0);

}, 0));您可以这样做:

const sum=commandQueue.reduce((acc,val)=>
编号(val.toString().split(',')[1])+acc,0);
控制台日志(总和)
var命令队列=[
函数(){thing(100,0,shiftFunc)},
函数(){thing(100233,shiftFunc)},
函数(){thing(100422,shiftFunc)}
];
函数getThingSecondArg(fn){
return+/thing\([^,]*,([^,]*)/.exec(fn)[1].trim();
};
函数和(arr){
对于(变量i=0,结果=0;i