面試之 閉包 return
阿新 • • 發佈:2018-05-26
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