javascriptexpressecmascript-6rest-parameters

What is the meaning of "...args" (three dots) in a function definition?


It was really confusing for me to read this syntax in Javascript:

router.route('/:id')
.put((...args) => controller.update(...args))
.get((...args) => controller.findById(...args));

What does ...args mean?


Solution

  • With respect to (...args) =>, ...args is a rest parameter. It always has to be the last entry in the parameter list and it will be assigned an array that contains all arguments that haven't been assigned to previous parameters.

    It's basically the replacement for the arguments object. Instead of writing

    function max() {
      var values = Array.prototype.slice.call(arguments, 0);
      // ...
    }
    max(1,2,3);
    

    you can write

    function max(...value) {
      // ...
    }
    max(1,2,3);
    

    Also, since arrow functions don't have an arguments object, this is the only way to create variadic (arrow) functions.


    As controller.update(...args), see What is the meaning of "foo(...arg)" (three dots in a function call)? .