js 纯函数
程序员文章站
2024-02-08 10:34:16
...
js 纯函数
纯函数特点:
1、函数f,对于输入x产生一个输出y=f(x)。
2、纯函数,输入x经过function处理之后输出y 在执行的过程中不会影响到外界的值。
3、纯函数的定义:对于相同的输入 永远会的到相同的输出,而且没有任何的副作用,也不依赖外部环境的状态。
4、纯函数指不依赖,不修改自己作用域以外的值。
举个栗子
<script>
var num = 18;
function compare(x) {
return x > num;
}
compare(10);//不是一个纯函数
</script>
上述例子就不是一个纯函数,因为该函数要依赖全局作用域下的变量。
优化:变为纯函数
<script>
var num = 18;
function compare(x, y) {
return x > y;
}
compare(10, num);
</script>
在举个栗子
<script>
var arr = [];
function add(_arr){
var a = 123;
_arr.push(a);
return _arr;
}
add(arr);
console.log(arr);//[123] 不是一个纯函数
</script>
上述例子就不是一个纯函数,因为该函数改变了原数组。
优化:
<script>
var arr = [];
function add(_arr){
var newArr = [];
var a = 123;
for(var i = 0;i<_arr.length;i++){
newArr.push(_arr[i]);
}
newArr.push(a);
return newArr;
}
var newArr = add(arr);
console.log(newArr); // [123]
console.log(arr); // []
</script>
纯函数优点:
1.js非常容易创建全局变量,在所有的函数中都可以被访问到
2.纯函数非常容易做单元测试,不需要考虑到上下文环境,只需要考虑输入和输出
3.纯函数不那么复杂,更容易调试,易于组合,易于并行化。