在计算机科学中,纯函数和副作用是两个重要的概念。
纯函数是指输入相同的参数,总是返回相同的结果,不会修改任何全局变量或对象的状态,也不会产生任何副作用。纯函数有很多好处,比如易于测试、易于缓存和优化,不会产生意外的行为等。
下面是一个简单的示例:
// 纯函数示例:计算两个数的和
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 输出 5
console.log(add(2, 3)); // 输出 5
在上述示例中,add 函数是一个纯函数,每次调用都会返回相同的结果,不会修改任何外部状态。
副作用是指函数除了返回值以外,还会修改全局变量、对象的状态、打印日志、调用其他函数等。副作用可以导致代码难以测试、难以维护、难以调试,还会产生意外的行为。
下面是一个修改了全局变量的示例:
// 副作用示例:修改全局变量
let count = 0;
function increment() {
count++;
return count;
}
console.log(increment()); // 输出 1
console.log(increment()); // 输出 2
在上述示例中,increment 函数有一个副作用,它会修改全局变量 count 的值,每次调用都会改变 count 的值,导致无法预测。