Tag Archives: parametros

I Love ES 6 – News Features – rest parameters

Chega de teoria! #4 – rest parameters

Continuando a saga para conhecer agora as novas features do ES6, projetadas para nos ajudar no desenvolvimento de nossos aplicativos. Vamos lá:

Hoje o ES6 apresenta o quarto recurso, o rest parameters. Este carinha resolveu o problema antigo causado pelo obj arguments, permitindo diferenciar nossos parâmetros.

Index.js

JS atual:

var sum = function() {

    var result = 0;

    for (var i=0; i < arguments.length; i++) {
        result += arguments[i];
    }

    return result;
}

sum(1, 4, 5);

Retorna 10. Aqui eu utilizo o obj arguments para pegar todos os parâmetros de uma função.

Problemas dos arguments

  1. O obj se assemelha a um array, mas não é
  2. Todos os parâmetros da função são automaticamente atribuídos ao arguments. Não há um modo claro para diferenciar os parâmetros

Para resolver esses problemas, surgiu o ES6/Rest Parameters.

Agora no ES6

Modo soma reescrito

function sum(...numbers) {

  let result = 0

  numbers.forEach((number) => {
    result += number
  })

  return result
}

sum(1, 4, 5)

Ou do modo mais funcional:

const sum = (...numbers) => 
    numbers.reduce((acc, current) => acc + current, 0)
sum(1, 4, 5)

Um pouco mais

Suponha o exemplo da soma, só que agora o primeiro parâmetro é onde a soma inicia e os demais parâmetros seriam os números a serem somados:

function sum(start, ...numbers) {

  let result = start;

  numbers.forEach((number) => {
    result += number;
  });

  return result;
}

sum(10, 1, 4, 5);

Ou

const sum = (start, ...numbers) => 
    numbers.reduce((acc, current) => acc + current, start)
sum(10, 1, 4, 5)

Então é isso treine bastante, e fiquei familiarizado com estes novos recursos.

Ok! Sobre as FEATURES do ES6 é tudo o que eu tenho a dizer.