高階函式的應用
阿新 • • 發佈:2018-12-15
1.作為引數傳給其他函式,如回撥函式
2.作為函式返回值
3.函式柯里化
4.節流函式setTimeout()
5.分時函式
function timeChunk(arr,count,fn){ function select(){ for(let i=0,len=arr.length;i<Math.min(count||1,len);i++){ //i小於count、arr.length中較小的一個 let el=arr.shift(); fn(el); //將被刪除的元素當作引數傳入fn中 } }; return function(){ let timer=setInterval(function(){ if(arr.length===0){ clearInterval(timer); } select(); },1000) } }; const arr=[]; for(let i=0;i<10;i++){ arr.push(i); } var renderList=timeChunk(arr,2,function(el){ let div=document.createElement('div'); div.innerHTML=el; document.body.appendChild(div); }); renderList();
6.惰性函式,判斷後直接重寫函式,免去每次呼叫都需要判斷
var addEvent=function(el,type,fn){ if(window.addEventListener){ addEvent=function(el,type,fn){ el.addEventListener(type,fn,false); } }else if(window.attchEvent){ addEvent=function(el,type,fn){ el.attchEvent('on'+type,fn); } } addEvent(el,type,fn); } var div=document.getElementById('div1'); addEvent(div,'click',()=>alert(1));