1. 程式人生 > >面試之 閉包 return

面試之 閉包 return

urn 調試 time 間隔 fun argument repeat returns AI

https://blog.csdn.net/FE_dev/article/details/74124373

經典面試題解釋

return 函數 ,在()之後才會執行

請定義這樣一個函數

function repeat (func, times, wait) {

}

這個函數能返回一個新函數,比如這樣用

var repeatedFun = repeat(alert, 10, 5000)

調用這個 repeatedFun ("hellworld")

會alert十次 helloworld, 每次間隔5秒

解答

/**

 * 第一題

 * @param func

 * @param times

 * @param wait

 * @returns {repeatImpl}

 
*/ function repeat (func, times, wait) { //不用匿名函數是為了方便調試 function repeatImpl(){ var handle, _arguments = arguments, i = 0; handle = setInterval(function(){ i = i + 1; //到達指定次數取消定時器 if(i === times){ clearInterval(handle);
return; } func.apply(null, _arguments); },wait); } return repeatImpl; } //測試用例 var repeatFun = repeat(alert, 4, 3000); repeatFun("hellworld"); /**

面試之 閉包 return