给定命令队列,如下所示。 。
var commandQueue = [
function() {thing(100, 0, shiftFunc)},
function() {thing(100, 233, shiftFunc)},
function() {thing(100, 422, shiftFunc)}
];
如何编写一个以commandQueue
为参数的函数,并将第二个参数(index [1])的总和返回给队列中的函数而不调用队列中的函数?
答案 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);