美文网首页
高阶函数

高阶函数

作者: lateryu | 来源:发表于2018-09-14 16:23 被阅读0次

高阶函数

1. 高阶函数的必须满足一下条件之一

  1. 函数可以作为参数被传递

  2. 函数可以作为返回值被输出

  1. 面向切面编程(AOP)

主要作用是把一些核心业务逻辑模块无关的功能抽象处理

  1. 函数柯理化

又称部分求值,一个柯里化函数首先会接受一些参数,接受参数之后,该函数不会立即求值,而是继续返回另一个函数,刚才传入的参数在函数形成的闭包中被保存,待到函数真正需要求值的时候,之前传入的所有参数都会被一次性用于求值

  1. 函数节流

javascript 中的函数大多是用户主动触发的,一般不会有性能问题,但是在有些场景下,函数有可能被频繁的调用,而造成性能问题, 比如: window.onresize事件,mousemove事件,上传进度等, 函数节流的原理:由于函数触发频率太高造成的性能问题,解决方法就是降低触发频率,或者或略一部分变化延迟执行函数


    var throttle = function (fn, interval) {

        var _self = fn, // 保存需要被延迟执行的函数的引用

            timer,

            firstTime = true; // 是否第一次调用

        return function () {

            var args = arguments,

                _me = this;

            if (firstTime) { // 如果是第一次,不需要延迟执行

                _self.apply(_me, args);

                return firstTime = false;

            }

            if (timer) {

                // 如果定时器还在说明前一次延迟执行还没有完成

                return false;

            }

            timer = setTimeout(function () {

                clearTimeout(timer);

                timer = null;

                _self.apply(_me, args);

            }, interval || 500);

        }

    }

    window.onresize = throttle(function () {

        console.log('1');

    }, 500)

```

4. 分时函数

> 有的时候函数的频繁调用是我们需要的,但是这些函数的频繁调用会影响页面性能,这个时候为了避免引起浏览器卡顿,就需要将工作分批进行,将时间拉开。

5. 惰性加载函数

> 针对一些有浏览器兼容问题的方法,我们通常需要在调用方法前做出判断,频繁的调用函数判断会增加额外的开销,这个时候就需要使用惰性加载函数,在第一使用的时候进行兼容想判断,然后将所得结果直接赋值给这个函数,覆盖,这样下一次调用的时候就不需要判断了

```js

    var addEvent = function (elem, type, handler) {

        if (window.addEventListener) {

            addEvent = function (elem, type, handler) {

                elem.addEventListener(type, handler, false);

            }

        } else if (window.attachEvent) {

            addEvent = function () {

                elem.attachEvent('on' + type, handler);

            }

        }

        addEvent(elem, type, handler); // 这里是将结果赋值给自己

    }

    var div = document.getElementById('box');

    addEvent(div, 'click', function () {

        console.log('div click');

    })

相关文章

  • python学习(三)函数式编程

    高阶函数 函数也是变量,函数参数为函数的函数,称作高阶函数 自定义高阶函数 内建高阶函数 map/reducema...

  • 11.Lambda和高阶函数(Lambda and Higher

    高阶函数 kotlin_Lambda,高阶函数 *swift_高阶函数

  • Python | 高阶函数基本应用及Decorator装饰器

    一、高阶函数 理解什么是高阶函数?以及高阶函数的基本应用方法 ▲ 高阶函数 在了解什么是高阶函数之前,我们来看几个...

  • 四、函数进阶

    一. 高阶函数 参数类型包含函数类型或返回值类型为函数类型的函数为高阶函数。 常见的高阶函数 高阶函数的调用 二....

  • Kotlin 高阶函数

    什么是高阶函数 将函数作为参数或者返回值的,称高阶函数。 定义高阶函数 action是一个高阶函数,(Int) -...

  • 高阶组件

    高阶组件 先来引入这个概念 高阶函数是什么? 高阶函数就是一个函数返回一个函数eg: 高阶组件 类同 高阶组件就是...

  • [JS函数] (Array)の高阶函数

    JS函数 高阶函数 高阶函数英文叫Higher-order function。那么什么是高阶函数? JavaScr...

  • HOC - High Order Component 高阶组件

    高阶函数 简而言之,可以接收函数作为参数的函数就是一个高阶函数。 上面的hoc函数就是一个高阶函数。 高阶组件 高...

  • Day10. 高阶组件

    1. 认识高阶函数 什么是高阶组件呢?认识高阶函数.png 高阶函数: 接收一个或多个函数作为输入, 输出一个函数...

  • Python高阶函数

    本文要点 1.什么是高阶函数 2.python中有哪些常用的高阶函数 什么是高阶函数? 在了解什么是高阶函数之前,...

网友评论

      本文标题:高阶函数

      本文链接:https://www.haomeiwen.com/subject/sbwogftx.html