Side effect就是“副作用”(侧面影响),通常是对于一个函数而言的,说一个函数“有副作用”或者“没有副作用”。
如果一个函数修改了自己范围之外的资源,那就叫做有副作用,反之,就是没有副作用。
用一个更具体的方式来说,假设某个函数在某种参数组合下返回一个结果N,我们现在就写死这个函数直接return N,如果这个修改完之后,整个程序一切如初,那就说明这个函数没有副作用,反之,就是有副作用。
很明显,有副作用的函数会做(不限于)这些事情:
- 修改全局变量
- 修改输入参数所引用的对象
- 做输入输出操作
- 调用其他有副作用的函数