什么是纯函数

定义:纯函数是指不依赖于 且 不改变 它作用域之外的变量状态的函数。


也就是说,纯函数的返回值只由它调用时的参数决定,它的执行不依赖于系统的状态(比如:何时、何处调用它。

例子:

例1:

非纯函数:

var values = { a: 1 }; 

function impureFunction ( items ) { 

       var b = 1;   

       items.a = items.a * b + 2;  

       return items.a;

}

 var c = impureFunction( values );// 现在 `values.a` 变成 3。impureFunction 改变了它,所以不纯。

纯函数:

var values = { a: 1 };

 function pureFunction ( a ) { 

         var b = 1;  

         a = a * b + 2;  

         return a;

}

 var c = pureFunction( values.a );

// `values.a` 没有被改变, 它的值仍然是 1


例2:

非纯函数:

var values = { a: 1 };

var b = 1; 

function impureFunction ( a ) { 

      a = a * b + 2;   

      return a;

var c = impureFunction( values.a );

// c 的值依赖于外部变量 b

// 你可能容易忽略这种情况,外部变量的变化也可能会导致函数出现不确定结果。

纯函数:

var values = { a: 1 };

var b = 1; 

function pureFunction ( a, c ) { 

        a = a * c + 2;   

        return a;

}

 var c = pureFunction( values.a, b );

// 这样从定义上明确 `c` 依赖于参数 `b`,避免函数不确定结果。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容