高阶函数的应用

版权声明:内容多为自言自语,请自行判断有无价值。 https://blog.csdn.net/weixin_41702247/article/details/83075741

1.作为参数传给其他函数,如回调函数

function add(a,b,fn){
    return fn(a)+fn(b);
};
add(1,2,x=>x*2);    //6

2.作为函数返回值

function mul(a,b){
    let result=a*b;
    return function(){
        result+=1;
        return result;
    }
}
var a=mul(2,3);
a();    //7

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

猜你喜欢

转载自blog.csdn.net/weixin_41702247/article/details/83075741