纯函数就是一个函数,只不过具有一些特点,你可能平时开发中都有用到,只是没有意识到这是一个纯函数。
纯函数(Prue function)具有以下特点:
- 纯函数每一次调用时传入同样的参数,返回的都是同样的结果;它不会改变参数的值,也不会改变外部变量的值;它不会依赖于外部的变量,仅依赖于你传入的参数;
- 纯函数没有其他副作用(side effect)
- 如果你每次传入的参数一样,但是返回的结果不一样,则不是一个纯函数
Just show me the code:
这是一个纯函数:
/*
它接受两个参数:一个数组和一个要添加的项
然后根据这两个参数,返回一个新的数组
它没有改变原来参数的值
每次调用时传递相同的值,返回的结果永远一样
它没有修改外部的变量和数据
*/
let array = [1, 2, 3];
function addItemToArray(array, item) {
return [...array, item];
}
addItemToArray(array, 4);
这不是一个纯函数
/*
这个函数 return 的值是一个数组
这个数组是在原来的数组 array 的基础上,追加了一项
它改变了外部变量
每次执行函数时传入同样的值,返回的结果不相同
所以它不是纯函数
*/
let array = [1, 2, 3];
function addItemToArray(array, item) {
return array.push(item);
}
addItemToArray(array, 4);
这是一个纯函数:
/*
它没有改变外部变量的值
每次调用时如果传递的值相同,那每次返回的结果也相同
*/
let a = 1;
let b = 2;
function add(x, y) {
return x + y;
}
add(a, b);
这不是一个纯函数:
/*
它改变了外部变量的值
每次返回的结果都不一样。
*/
let a = 1;
function add(x, y) {
return x += y;
}
add(a, 2);
纯函数的优点:
纯函数使代码更可靠,可利于测试与维护,在开发中应该尽可能多地使用纯函数。
哪些情况不适用纯函数:
- 网络请求:根据网络请求返回不同的数据
- 其他需要改变外部变量的函数
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。