zoukankan      html  css  js  c++  java
  • JavaScript—纯函数

    定义

    一个函数的返回结果只依赖它的参数,而且在计算过程中不会产生其他副作用,也就是不会对外部的数据造成影响或改变。

    理解:函数的返回结果只依赖它的参数

    const a= 1;

    const b= (c) => {  a + b }

    b ( 2 );  //3

      b()并不是一个纯函数,因为它的返回结果依赖外部的变量a, 虽然函数b()自身没有变化,但如果a发生变化,返回结果就会变化

      计算过程中不会产生其他副作用

    const a = 1
    const func = (obj, b) => {
      return obj.x + b
    }
    const counter = { x: 1 }
    func(counter, 2) // => 3
    counter.x // => 1

    往里面传一个对象进行计算,计算的过程里面并不会对传入的对象进行修改,计算前后的 counter 不会发生任何变化,计算前是 1,计算后也是 1,它现在是纯的。但是我再稍微修改一下它:

    const a = 1
    const func= (obj, b) => {
      obj.x = 2
      return obj.x + b
    }
    const counter = { x: 1 }
    func(counter, 2) // => 4
    counter.x // => 2
     

    现在情况发生了变化,我在 func 内部加了一句 obj.x = 2,计算前 counter.x 是 1,但是计算以后 counter.x 是 2。func函数的执行对外部的 counter 产生了影响,它产生了副作用,因为它修改了外部传进来的对象,现在它是不纯的。

  • 相关阅读:
    hdu 1201 18岁生日
    线性代数
    关于pymongo的一些说明
    利用数组进行数据处理
    通用函数:快速的元素级数组函数
    IPython:一种交互式计算和开发环境
    关于一道面试题的思考
    wireshark中的抓包过滤器和显示过滤器
    wireshark推荐书籍
    wireshark 找不到网卡的解决办法
  • 原文地址:https://www.cnblogs.com/GOOGnine/p/12176119.html
Copyright © 2011-2022 走看看