美文网首页
函数式编程

函数式编程

作者: 湘兰沅芷 | 来源:发表于2021-03-13 15:10 被阅读0次

    函数式编程是对运算过程进行抽象,数据(函数)之间的映射关系。
    最大程度的重用我们的函数
    纯函数:相同的输入始终有相同的输出。
    函数式一等公民:函数可以存储在变量中、函数可以作为参数、函数可以作为返回值。
    高阶函数:
    1.可以把函数作为参数传递给另一个函数。
    2.可以把函数作为另一个函数的返回结果。
    函数作为参数例子:

    function forEach(arr, fn) {
        for (let value of arr) {
            fn(value)
        }
    }
    let arr = [1, 2, 3]
    forEach(arr, val => console.log(val))
    
    function filter(arr, fn) {
        let result = []
        for (let value of arr) {
            if(fn(value)) {
                result.push(value)
            }
        }
        return result
    }
    let arr = [1, 2, 3]
    console.log(filter(arr, val => val > 2))
    
    const map = function (arr, fn) {
        let result = []
        for(let value in arr) {
            result.push(fn(value))
        }
        return result
    }
    let arr = [1, 2, 3]
    console.log(map(arr, val => val * val))
    
    const every = function(arr, fn) {
        let result = true
        for (let value in arr) {
            result = fn(value)
            if (!result) {
                break
            }
        }
        return result
    }
    let arr = [1, 2, 3]
    every(arr, v => v > 1)
    
    const some = function(arr, fn) {
        let result = false
        for (let value in arr) {
            result = fn(value)
            if (result) {
                break
            }
        }
        return result
    }
    let arr = [1, 2, 3]
    some(arr, v => v > 1)
    

    函数作为返回值例子:

    const makeFn = function() {
        const msg = 'hello'
        return function() {
            console.log(msg)
        }
    }
    makeFn()()
    
    const once = function(fn) {
        let done = false;
        return function() {
            if (!done) {
                done = true;
                return fn.apply(this, arguments)
            }
        }
    }
    let pay = once(function(money) {
        console.log(money)
    })
    pay('yiyuan')
    pay('2')
    

    使用高阶函数的意义:
    抽象可以帮助我们屏蔽细节,只需要关注我们的目标
    高阶函数式用来抽象通用的问题

    常用的高阶函数:
    forEach、map、filter、every、some、find/findIndex、reduce、sort

    相关文章

      网友评论

          本文标题:函数式编程

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