JS函数: 纯函数

前端之家收集整理的这篇文章主要介绍了JS函数: 纯函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

函数

函数是指不依赖于上下文环境 且 不改变它作用域之外的变量状态的函数

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

案例

var values = { a: 1 };

function pureFunction ( a ) {
var b = 1;

a = a * b + 2;

return a;
}

var c = pureFunction( values.a );
// values.a 没有被改变,它的值仍然是 1

上面的代码,我们只计算了作用域内的局部变量,没有任何作用域外部的变量被改变,因此这个函数是“纯函数”。

var values = { a: 1 };
var b = 1;

function impureFunction ( a ) {
a = a * b + 2;

return a;
}

var c = impureFunction( values.a );
// 实际上,c 的值依赖于外部变量 b.
// 你可能容易忽略这种情况,外部变量的变化也可能会导致函数出现不确定结果。

上面的代码里,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,避免函数不确定结果。

上面这样改就成了“纯函数”。

总结

使用纯函数的好处

最主要的好处是没有副作用。纯函数不会修改作用域之外的状态,做到这一点,代码就变得足够简单和清晰:当你调用一个纯函数,你只要关注它的返回值,而不用担心因为别处的问题导致错误

函数是健壮的,改变执行次序不会对系统造成影响,因此纯函数的操作可以并行执行。

函数非常容易进行单元测试,因为不需要考虑上下文环境,只需要考虑输入和输出

最后,尽可能使用纯函数让你的代码保持简单和灵活。(解耦)

猜你在找的程序笔记相关文章