面试题答案
一键面试纯函数定义
纯函数是指在给定相同输入的情况下,始终返回相同输出,并且不会产生任何可观察的副作用(如修改外部变量、进行 API 调用、打印日志等)的函数。
纯函数示例
function add(a, b) {
return a + b;
}
无论何时调用 add(2, 3)
,它都会返回 5
,不会对外部环境产生任何影响。
非纯函数示例
let count = 0;
function increment() {
count++;
return count;
}
每次调用 increment
函数,即使没有传入参数,返回值也会因为修改了外部变量 count
而不同,这就是产生了副作用。
纯函数在函数式编程中的重要性
- 可预测性:由于给定相同输入返回相同输出,使得程序行为更容易理解和预测,方便调试和维护。
- 可缓存性:因为输出仅依赖输入,所以可以通过缓存输入 - 输出对来优化性能,避免重复计算。
- 并行处理:纯函数无副作用,在多线程或分布式环境下,可以安全地并行执行,不用担心数据竞争问题。
在数据处理模块中提高可维护性和测试性
- 提高可维护性:纯函数将数据处理逻辑封装,相互独立,修改一个纯函数不会影响其他部分的代码,降低了代码耦合度,使得代码结构更清晰,更易于维护。例如在数据清洗模块,每个清洗步骤都可以写成纯函数,如清洗字符串的函数
function cleanString(str) { return str.trim().toLowerCase(); }
。 - 提高测试性:测试纯函数非常简单,只需验证输入和输出是否符合预期,不需要考虑外部环境的影响。比如测试
add
函数,只需要断言add(2, 3)
的返回值是否为5
即可。在数据处理模块的单元测试中,纯函数可以很方便地进行单独测试,保证数据处理逻辑的正确性。