A pure function is a function that has a return value determined entirely by the input parameters, and does not have any side-effects.
Functions that do not meet these requirements are called 'impure'.
Because Pure functions are deterministic they are easy to understand, and makes issues easy to fix. They are easy to use as building blocks when creating complex business logic.
It is much easier to write an exhaustive test suite covering all input parameters that reach different branches.
Unlike Pure functions, Impure functions are harder to follow and test because they use external state and behavior that affects the result of the function.
For more information on benefits of pure functions, see https://alvinalexander.com/scala/fp-book/benefits-of-pure-functions/.