Functional programming is a programming paradigm where the focus is on changing data through small expressions that don’t have side effects.
In other words, when multiples calls to any function occur with the same arguments, the result will always be the same. This is because the functions don’t depend on a local or global state, which produces different results depending on the state.
Functional programming is based on:
Functions that can be treated like regular variables. Such functions can be passed as arguments to other functions, can be returned by other functions, and can be assigned as values to a variable.
var foo = function(){return "Edpressos are fun!";}function Edpresso(greeting){console.log("Educative's " + greeting());}Edpresso(foo);
Functions that return other functions are called higher order functions.
Data cannot be modified after creation in functional programming. So for example, an object ‘n’ with the value of 5 will always have the value of 5.
The evaluation of an expression in functional programming is delayed until the value is needed.
// Not lazyvar sum = 1 + 1;// Evaluates 1 + 1 immediately// Lazyconst lazySum = () => 1 + 1;// Evaluates 1 + 1 upon invocation
Most functional code is written with recursion instead of for-loops. In fact, some functional languages don’t even support for-loops!
Pure functions are functions whose return values are solely determined by the function’s inputs.