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;

  • Uia, no JS eu desconhecia também.
    def boo(*args); end; no Ruby :~
  • Dirceu Jr.
    Uia, no JS eu desconhecia tamb&eacute;m. def boo(*args); end; no Ruby :~
  • Ô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
  • &amp;lt;![CDATA[Bruno]]&amp;
    &Ocirc;pa Raphael ainda n&atilde;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&eacute;m falar de software vai ter que virar um copo :D
  • 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...
  • &amp;lt;![CDATA[Bruno]]&amp;
    Quer criar fun&ccedil;&otilde;es em Javascript que aceitem um n&uacute;mero vari&aacute;vel de par&acirc;metros? Muito f&aacute;cil! Eu te mostro como&hellip;
    N&atilde;o entendi...
  • 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.
  • Guest
    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&oacute; permitiu a inclus&atilde;o dessa feature na linguagem 27 anos depois.... hehe. Desculpa, Bruno. N&atilde;o resisti. D&aacute; o dedinho, fica de bem. Viu o v&iacute;deo? Eu estava conversando com o Miguel, acho que valia um post aqui no blog sobre o lance de Sapir-Whorf.
  • 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.
  • &amp;lt;![CDATA[Bruno]]&amp;
    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&oacute; estou adicionando o coment&aacute;rio aqui para contribuir com quem desconhece esta caracter&iacute;stica de Java, n&atilde;o querendo comparar de maneira alguma Java com Javascript, ambas linguagens que me interessam muito.
blog comments powered by Disqus

Switch to our mobile site