A pure function for given the same input will always return the same output and evaluation of this function will not cause any side effects.
- easy to test, as they always return the same value,
- easy to debug, as they shouldn't cause any race conditions and circular dependencies,
- simple and independent, as they don't cause any side effects (it makes design clean),
- easy to scale application up, as they shouldn't rely on machine state.
- components in React
- reducers in Redux (the state isn't mutable)