Artigos de Tecnologia e Negócios > Front-end

Lidando com parâmetros obrigatórios em JavaScript

Flavio Henrique de Souza Almeida
Flavio Henrique de Souza Almeida
Imagem de destaque

É bem comum o desenvolvedor JavaScript precisar testar a obrigatoriedade de parâmetros das funções que cria. Vejamos um exemplo:


function moveFrame(from, to) { if(!from) throw new Error('Parâmetro "from" obrigatório'); if(!to) throw new Error('Parâmetro "to" obrigatório');

// realiza a lógica de mudança de frame

Excelente, mas se nossa função tiver cinco parâmetros obrigatórios, teremos que repetir cada instrução if cinco vezes. A boa notícia é que podemos utilizar um recurso adicionado no ES2015 (ES6) já consolidado entre os navegadores para tornar nosso código menos verboso e elegante. Primeiro, vejamos que recurso é este:

Parâmetro padrão (default parameter)

Temos como exemplo a função temporizador que executará uma função depois da quantidade de milissegundos definida pelo usuário:


function temporizador(fn, milissegundos) { setTimeout(fn, milissegundos); }

temporizador(() => console.log('Função executada!'), 3000);

Muito bom, mas o programador terá que passar toda vez, como último parâmetro, a quantidade de milissegundos. Que tal adotarmos um valor padrão caso o parâmetro não tenha sido definido?

Alterando nossa função temos:


function temporizador(fn, milissegundos) {

milissegundos = milissegundos || 1000;

setTimeout(fn, milissegundos); }

// não passamos mais o tempo temporizador(() => console.log('Função executada!'));

O valor de milissegundos será 1000 caso seu valor seja avaliado como false. Em JavaScript, undefined, null, "" e 0 são avaliados como false.

No entanto, podemos simplificar bastante nosso código atribuindo um valor padrão diretamente no parâmetro, novidade do ES2015 (ES6):


function temporizador(fn, milissegundos = 1000) {

setTimeout(fn, milissegundos); }

temporizador(() => console.log('Função executada!'));

Na própria declaração do parâmetro milissegundos atribuímos seu valor padrão, que só será considerado caso ele tenha sido omitido. Muito mais enxuto, não?

Agora que já entendemos como valores padrões são definidos na linguagem JavaScript, podemos utilizar esse recurso para tornar parâmetros obrigatórios.

Parâmetros obrigatórios com ajuda de parâmetros padrão

Vamos voltar para a função moveFrame, apresentada no início do artigo:


function moveFrame(from, to) { if(!from) throw new Error('Parâmetro "from" obrigatório'); if(!to) throw new Error('Parâmetro "to" obrigatório');

// realiza a lógica de mudança de frame }

Podemos simplificá-la bastante estruturando nosso código da seguinte maneira:


function obrigatorio(parametro) { throw new Error(\`O parâmetro ${parametro} é obrigatório.\`); }

function moveFrame(from=obrigatorio('from'), to=obrigatorio('to')) {

// realiza a lógica de mudança de frame }

Reparem que o valor padrão dos dois parâmetros da função moveFrame é a chamada da função obrigatorio, isto é, ela só será chamada se alguns dos parâmetros não forem definidos. A única responsabilidade de obrigatorio será lançar uma exceção indicando a obrigatoriedade dos parâmetros. Inclusive, essa mesma função pode ser reutilizada por outras funções do sistema.

Conclusão

Combinar diferentes recursos para criar uma nova funcionalidade faz parte da arte da programação de todo Cangaceiro JavaScript! Aliás, a Alura possui cursos de front-end que podem ajudá-lo a ficar ainda melhor em JavaScript e outros tópicos.

Twitter: @flaviohalmeida

Leia também:

Artigos de Tecnologia e Negócios > Front-end

Cursos profissionais de Front-end é na Alura, comece agora!

  • 1049 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1049 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1049 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1049 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana