Funções com argumentos variáveis em Javascript

As vezes, é útil escrever funções ou métodos cujo número de argumentos é desconhecido a priori. O exemplo clássico funções de formatação de String.

printf("Olá, meu nome é %s, tenho %d anos e moro em %s", "Miguel", 27, "São Paulo")

No exemplo acima, sabemos que no mínimo teremos 1 argumento, que é a string a ser impressa. Mas não sabemos quantos elementos serão injetados na string final. Uma forma de contornar isso é passando os parâmetros em um vetor. A outra é usando um sistema de número de parâmetros variáveis.

Em Javascript, isto é possível utilizando a variável local arguments, existente dentro de cada função executada. Esta variável é um vetor que contém todos os parâmetros realmente passados na chamada da função. Exemplo de uso:

function foo(){ var sum = 0; for (var i=0; i<arguments.length; i++ ) sum += arguments[i]: return sum }

O código acima recebe um número desconhecido de inteiros e retorna a soma destes.

foo(1) = 1; foo(1,2,3) = 6 foo()=0;

View Comments on this post.
  1. :

    Bem interessante esta feature de JS que eu desconhecia :)

    Vale lembrar que Java (apesar de ter sua sintaxe considerada conservadora demais por muitos) tem um mecanismo para resolver exatamente este problema deste 2005, chamado varargs.

    Só estou adicionando o comentário aqui para contribuir com quem desconhece esta característica de Java, não querendo comparar de maneira alguma Java com Javascript, ambas linguagens que me interessam muito.

  2. :

    Vale lembrar que C tem varargs desde 22 de abril de 1500, quando Pero Vaz de Caminha mandou a spec dessa feature na linguagem, foi aceita em C em 1978, mas a JSR 2022 só permitiu a inclusão dessa feature na linguagem 27 anos depois…. hehe.

    Desculpa, Bruno. Não resisti. Dá o dedinho, fica de bem.

    Viu o vídeo? Eu estava conversando com o Miguel, acho que valia um post aqui no blog sobre o lance de Sapir-Whorf.

  3. :

    Funções com argumentos variáveis em Javascript « Log4Dev

    Quer criar funções em Javascript que aceitem um número variável de parâmetros? Muito fácil! Eu te mostro como…

  4. :

    Quer criar funções em Javascript que aceitem um número variável de parâmetros? Muito fácil! Eu te mostro como…

    Não entendi…

  5. :

    Ôpa Raphael ainda não vi o video, mas deve render algum post em meu blog depois, hehe.

    Quanto a ficar de bem precisamos marcar um chopp com todos os autores deste blog um dia destes, toda vez que alguém falar de software vai ter que virar um copo :D

  6. :

    [...] aprender mais dicas avançadas de Javascript? Funções com argumentos variáveis em Javascript, Captura de teclas em Javascript – Parte 1, Captura de teclas em Javascript – Parte 2 e [...]

  7. :

    [...] No terceiro também, e o valor 3 poderá ser acessado pela variável local arguments (leia o meu post sobre argumentos variáveis em Javascript para entender esta [...]

  8. Dirceu Jr.:

    Uia, no JS eu desconhecia também. def boo(*args); end; no Ruby :~

Leave a comment





blog comments powered by Disqus