纯函数

什么是纯函数

  • 返回结果只依赖它的参数
  • 函数执行过程中没有副作用

什么是返回结果只依赖参数呢

var a = 1;
function num(b){ return a+b};

上面的函数不是纯函数因为它依赖外部变量,所以它不是纯函数

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

上面的函数就是纯函数,因为它的返回值只依赖它的参数

函数执行过程中没有副作用

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

从上面我们可以看出来counter对象中的x属性并没有改变,所以这个函数执行没有产生副作用

const foo = (obj, b){
obj.x = 2;
return obj.x + b;
}
const counter = {x: 1};
foo(counter, 2);
counter.x //2

从上面可以看出这个函数在执行的过程中改变了counter中x的属性,所以这个函数不是纯函数

如果在函数内创建的对象然后改变,这个没有影响外部的变量,所以这样就是纯函数

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,306评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,733评论 0 38
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,668评论 0 13
  • 接着上节 mutex,本节主要介绍atomic的内容,练习代码地址。本文参考http://www.cplusplu...
    jorion阅读 73,915评论 1 14
  • 最近发生了很多事情,证明了在互联网时代,链接很重要。有效的链接考验个人的能力+个人的信用。如果一个人有能力,又讲信...
    陶维英阅读 2,905评论 15 3