码迷,mamicode.com
首页 > 其他好文 > 详细

什么是纯函数?

时间:2020-05-24 12:11:16      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:style   bsp   function   返回   nbsp   return   class   turn   log   

大致从两个方向上进行判断,

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也属于副作用

 

什么是纯函数?

标签:style   bsp   function   返回   nbsp   return   class   turn   log   

原文地址:https://www.cnblogs.com/ashen1999/p/12949047.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!