Rest Parameters


Utilizado para analisar cada elemento de um array.

    Resumo/Informações
    • What it does
      Rest parameters allows us to pass an arbitrary (random choice) number of arguments into a function, and use these arguments in that function.
      Utiliza o ...
      No Spread Operator, recebe-se um array de elementos e transforma-o em um com single values.
      Já o Rest Parameters recebe-se um array e utiliza-o como single values.

    • Examples
      Function that recieves an arbitrary number of years and prints to the console whether each person corresponding to these years is of full age or not.

      ES5
      function isFullAge5() {
        //console.log(arguments);
        a) arguments é uma palavra que temos acesso em todas as funções, aqui utilizada para sabermos todos os argumentos dessa função.
        b) This will return [1990, 1999, 1965], which are the arguments passed to the function, however, this is an array-like stucture, but not an array. So it must be converted to an array.
        c) To use this return as an array, and be able to loop through it, we must transform it, using slice.
        var argsArr = Array.prototype.slice.call(arguments);

        argsArr.forEach(function(cur){ cur is the current element of the array that is being looped through
         console.log((2016 - cur) >= 18); in this case, the cur will be the years of the array, passed through arguments to the isFullAge5 function
        });
      }

      isFullAge(1990, 1999, 1965);

      ES6
      function isFullAge6(...years) { When we call the function, it will transform the arguments into an array and then pass them into this function
        years.forEach((cur => 2016 - cur) >= 18);
      }
      isFullAge6(1990, 1999, 1965);

      Another Example
      ES5
      function isFullAge5(limit) {
        //console.log(arguments); [21, 1990, 1999, 1965]
        a) arguments é uma palavra que temos acesso em todas as funções, aqui utilizada para sabermos todos os argumentos dessa função.
        b) This will return [1990, 1999, 1965], which are the arguments passed to the function, however, this is an array-like stucture, but not an array. So it must be converted to an array.
        c) To use this return as an array, and be able to loop through it, we must transform it, using slice.
        var argsArr = Array.prototype.slice.call(arguments, 1); visto que precisamos do primeiro item do array para o argumentos limit e o resto poderá ser utilizado para o loop de years, utiliza-se o slice para obrigar a começar da position 1 (visto que a zero é 21).
        console.log(argsArr); [1990, 1999, 1965]
        argsArr.forEach(function(cur){ cur is the current element of the array that is being looped through
         console.log((2016 - cur) >= limit); in this case, the cur will be the years of the array, passed through arguments to the isFullAge5 function
        });
      }

      isFullAge(21, 1990, 1999, 1965);

      ES6
      function isFullAge6(limit, ...years) { When we call the function, it will transform the arguments into an array and then pass them into this function
        years.forEach((cur => 2016 - cur) >= limit);
      }
      isFullAge6(16, 1990, 1999, 1965);
      ** Veja como é bem mais fácil fazer o processo aqui, visto que o primeiro argumento será o limit e o resto será o array years.