我试图在多次调用函数后返回一个值.这是我到目前为止所拥有的:
function spyOn(fn) { //takes in function as argument
//returns function that can be called and behaves like argument
var count = 0;
var inner = function(){
count++;
}
inner.callCount = function(){return count};
}
这就是我测试它的方式:
for (var i = 0; i < 99; i++) {
spyOn();
}
我觉得这是一个简单的问题,我应该能够简单地谷歌,但我一直无法找到解决方案.谢谢!
最佳答案
看起来你的spyOn函数应该接受一个函数fn作为参数并返回一个函数(让我们称之为内部),调用带有参数inner的fn调用f并返回fn返回的值:
const spiedCube = spyOn( cube,function ( count,result ) {
if ( count % 3 === 0 )
console.log( `Called ${count} times. Result: ${result}` );
} );
for ( let i = 0; i < 12; i++ )
console.log( spiedCube( i ) );
//
function spyOn( fn,handler ) {
let count = 0;
return function inner ( ) {
count++;
const result = fn( ...arguments );
handler( count,result );
return result;
};
}
function cube ( x ) {
return x**3;
}