柯里化函数,防抖,节流,纯函数

柯里化函数

 // 柯里化函数
        function add(a, b, c, d) {
            return a + b + c + d;
        }
        function FixedParmasCurry(fn) {
            var args = [].slice.call(arguments, 1); //截取fn需要的参数
            return function () {
                var newArg = args.concat([].slice.call(arguments, 0)); //传的参数拼接
                return fn.apply(this, newArg) //返回一个函数
            }
        }
        function Curry(fn, length) {
            console.log([fn])
            var length = length || fn.length;
            if (arguments.length < length) {
                var arr = [fn].concat([].slice(arguments, 0)); //[fn,第一次传的参数]
                return Curry(FixedParmasCurry.apply(this, arr), length - arguments.length);
            }
            else {
                return fn.apply(this, arguments)
            }
        }
        var newAdd = Curry(add);

防抖

//防抖
        function debounce(handler, delay) {
            var timer = null;
            return function () {
                var self = this, args = arguments;
                clearTimeout(timer);
                timer = setTimeout(function () { //设定多少时间后在执行,在input输入时,onInput在输入完才执行一次
                    handler.apply(self, args);
                }, delay)
            }
        }

节流

//节流 如;抢票规定多少时间内只能点击一次
        function throttle(handler, wait) { //wait是规定的等待的时间
            var lastTime = 0; //上一个时间
            return function (e) {
                var newTime = new Date().getDate();
                if (newTime - lastTime > wait) {
                    handler.apply(this, arguments);
                    lastTime = newTime;
                }
            }
        }

纯函数
一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。
纯函数

function sum(a,b){
 return a + b
}

非纯函数

        var c = 0;
        function sum(a, b) {
            return c = a + b;
        }
        sum(1, 2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值