@gyyin
2020-02-06T14:58:51.000000Z
字数 399
阅读 320
JavaScript
slice和splice两个函数,前者对相同的输入返回相同的输出,而后者会修改原本的数组,产生了副作用。
纯函数不应该依赖外部的变量,需要做到自给自足,以下面的代码为例子。
// 不纯的
var minimum = 21;
var checkAge = function(age) {
return age >= minimum;
};
// 纯的
var checkAge = function(age) {
var minimum = 21;
return age >= minimum;
};
如果要把这段代码变"纯",那就需要创建一个不可变的对象,可以将minimum变为const。
只要是跟函数外部环境发生的交互就都是副作用。
副作用可能包含,但不限于:
1. 更改文件系统
2. 往数据库插入记录
3. 发送一个 http 请求
4. 可变数据
5. 打印/log
6. 获取用户输入
7. DOM 查询
8. 访问系统状态