1. 程式人生 > >高階函式的應用

高階函式的應用

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));