关于前端:带你深入了解JavaScript

2次阅读

共计 1078 个字符,预计需要花费 3 分钟才能阅读完成。

纯函数

原文链接:https://note.noxussj.top/?source=sifo

什么是纯函数?

雷同的输出永远会失去雷同的输入,而且没有任何可察看的副作用。纯函数就相似数学中的函数(用来形容输出和输入之间的关系)y=fn(x)

纯函数库

咱们平时用的 lodash 其实就是纯函数库。


纯函数的长处

可缓存(间接晋升性能)

也就是咱们平时说的函数缓存,因为纯函数对雷同的输出始终有雷同的后果,所以能够把纯函数的后果缓存起来,就没必要每次调用该函数都要从新执行一遍函数体的代码

可测试

纯函数让测试更不便,不受副作用的影响

并行处理

在多线程环境下并行操作共享的内存数据很可能会出现意外状况(纯函数内的数据都是独立的),纯函数不须要访问共享的内存数据,所以在并行环境下能够任意运行纯函数


根底案例

纯函数

雷同的输出始终失去雷同的输入

const array = [1, 2, 3, 4, 5]

    console.log(array.slice(0, 3))
    console.log(array.slice(0, 3))
    console.log(array.slice(0, 3))

    // [1, 2, 3]
    // [1, 2, 3]
    // [1, 2, 3]
不纯的函数

雷同的输出失去的输入却不雷同

const array = [1, 2, 3, 4, 5]

    console.log(array.splice(0, 3))
    console.log(array.splice(0, 3))
    console.log(array.splice(0, 3))

    // [1, 2, 3]
    // [4, 5]
    // []
函数缓存

每次调用函数,并且传入参数雷同时,函数体内代码不会被执行,间接返回上一次输入的后果

    const lodash = require('lodash')

    function getArea(r) {console.log(r)
        return Math.PI * r * r
    }

    let getAreaWithMemory = lodash.memoize(getArea) // 创立一个缓存函数

    console.log(getAreaWithMemory(4))
    console.log(getAreaWithMemory(4))
    console.log(getAreaWithMemory(4))
    console.log(getAreaWithMemory(5))

    // 4
    // 50.26548245743669
    // 50.26548245743669
    // 50.26548245743669
    // 5
    // 78.53981633974483

原文链接:https://note.noxussj.top/?source=sifo

正文完
 0