**Defination:** Variadic functions are functions that take an indefinite number of arguments.

For example, let’s say we have a function called `sum()`

which calculates the sum of an indefinite amount of numbers. How might the `sum()`

function be called during execution?

```
sum(1, 2);
sum(10, 36, 7, 84, 90, 110);
sum(-23, 3000, 575000);
```

There’s literally an endless number of ways the `sum()`

function could be called. Regardless of the amount of numbers passed to the function, it should always return the total sum of the numbers.

### Using the rest parameter(...)

We can define the function with n numbers of arguments using javscript rest param like following:

```
function sum(...nums) {
let total = 0;
for(const num of nums) {
total += num;
}
return total;
}
```