When we talked about function, I mentioned you can extract some portion of code, give it a name, and call it later.

For example say you have this code

``````const x = 1
const result = x * 2
console.log(result)
const anotherResult = 10 * 2
console.log(anotherResult)
``````

You can take the `x * 2` operation, assign it to a `doubleNumber` function:

``````function doubleNumber(num) {
return num * 2
}
``````

and now the code can be rewritten using

``````const x = 1
const result = doubleNumber(x)
console.log(result)
const anotherResult = doubleNumber(10)
console.log(anotherResult)
``````

One interesting part is that functions can call themselves.

You might think: why? Or, why should I know this?

This has very practical implications, and can be especially useful when creating an algorithm, or a complex calculation.

The classic example is the factorial calculation. Given a number, the result should be the it, multiplied by the number - 1, multiplied by the number - 2, until you reach the number 1.

It’s hard to see how to create a general purpose function to solve this, until you add recursion to the mix:

``````function calculateFactorial(number) {
if (number === 1) {
return 1
}
return number * calculateFactorial(number - 1)
}
``````

Go to the next lesson