什么是纯函数
纯函数是指那些不依赖于外部状态,也不改变外部状态的函数。在JavaScript中,纯函数的返回值仅由其输入参数决定,而且执行纯函数不会产生副作用,比如修改全局变量或修改传入的参数。
常见的纯函数
JavaScript中一些常见的自带纯函数包括:
1.Math.abs
:返回参数的绝对值。
2.Math.min
和 Math.max
:分别返回一组数中的最小值和最大值。
3.Math.round
:四舍五入。
4.Math.floor
和 Math.ceil
:分别向下和向上取整。
5.Array.prototype.slice
:不改变原数组,返回一个新数组。
6.String.prototype.toUpperCase
和 String.prototype.toLowerCase
:转换字符串的大小写。
还有一些对数组的操作方法,可以不修改原数组拿到修改后的数组
1.toSorted()
: 这个方法会返回一个新数组,其中的元素是按照升序排列的。它不会改变原数组。
let numbers = [1, 3, 2, 4];
let sortedNumbers = numbers.toSorted();
console.log(sortedNumbers); // 输出: [1, 2, 3, 4]
console.log(numbers); // 输出: [1, 3, 2, 4],原数组不变
2.toReversed()
: 这个方法会返回一个新数组,其中的元素顺序与原数组相反。它不会改变原数组。
let numbers = [1, 3, 2, 4];
let reversedNumbers = numbers.toReversed();
console.log(reversedNumbers); // 输出: [4, 2, 3, 1]
console.log(numbers); // 输出: [1, 3, 2, 4],原数组不变
3.toSpliced()
: 这个方法会返回一个新数组,它会从原数组中移除指定数量的元素,并在指定位置插入新的元素。它不会改变原数组。
let numbers = [1, 2, 3, 4, 5];
let splicedNumbers = numbers.toSpliced(1, 2, 'a', 'b');
console.log(splicedNumbers); // 输出: [1, 'a', 'b', 5]
console.log(numbers); // 输出: [1, 2, 3, 4, 5],原数组不变
判断是否是纯函数
判断一个函数是否是纯函数,你可以根据以下两个标准:
1.相同的输入总是得到相同的输出:无论何时何地,只要给定相同的输入参数,纯函数总是返回相同的结果。
2.不产生副作用:纯函数在执行过程中不会改变任何外部状态,也就是说,它不会修改任何全局变量、传入的参数或者其他任何外部状态。
如果一个函数满足这两个条件,那么它就是一个纯函数。在实际编程中,纯函数通常更容易理解和测试,因为它们的行为不依赖于任何外部环境。