什么是纯函数?
Posted ashen1999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是纯函数?相关的知识,希望对你有一定的参考价值。
大致从两个方向上进行判断,
1. 函数的返回结果只依赖于它的参数
2. 执行过程中没有副作用
对于第一点,下面看一个例子,func1中返回的值只依赖于传入的参数属于纯函数,而func2中返回的值依赖于外部参数x,是不纯的
var x = 1; function func1(a, b){ return a + b; } function func2(a, b){ return a + b + x; }
对于第二点,副作用就是指函数内部使外部环境的产生了可观察的变化,如下
var count = {price: 10} function func3(obj, a){ return obj.price + a } func3(count, 5) function func4(obj, a){ obj.price = 50 return obj.price + a } func4(count, 5)
在func3中,并未对obj的值进行更改,属于纯函数;在func4中,count的price被改为了50,是不纯的
副作用不仅限于此,还包括http请求、调用DOM API更改页面、发送Ajax请求,甚至console.log也属于副作用
以上是关于什么是纯函数?的主要内容,如果未能解决你的问题,请参考以下文章
什么是纯 JavaScript 的“hasClass”函数?