Funções com argumentos variáveis em Javascript
Talvez você já tenha se deparado em uma situação onde precisava de uma ou mais funções em Javascript com o mesmo nome, porém com listas de argumentos diferentes ou com um argumento com um valor padrão.
Pois é, isso não existe em Javascript, pelo menos não como outras linguagens normalmente implementam. Um das formas de resolver este problema é utilizando a propriedade arguments das funções.
Propriedade arguments
arguments é uma propriedade que contém os argumentos passados para a função. Ele só pode ser chamado localmente e pode ser utilizado como um array.
Propriedades:
Function.arguments.length: Quantidade de argumentos declarados.
arguments.length: Quantidade real de argumentos.
arguments.callee: Referência para função.
Lembre-se que o arguments deve ser utilizado de dentro da função. Aqui vão alguns exemplos para deixar as coisas mais claras.
Você pode passar quantos argumentos quiser sem precisar declara-los na função:
function myfunc() { a = arguments[0]; b = arguments[1]; c = arguments[2]; // ... } myfunc(1, 2, 3);
Um meio de se indicar um valor padrão para um argumento que não é passado:
function myfunc(a, b) { var c = 3; if (arguments.length == 3) { c = arguments[2]; } /* ou var c = arguments.length == 3 ? arguments[2] : 3; */ } myfunc(1, 2); /* ou */ myfunc(1, 2, 3);
Verificando a quantidade de argumentos passados com os permitidos:
function myfunc(a, b) { if (arguments.length != myfunc.arguments.length) { alert('Passe 2 argumentos!'); } // ... } myfunc(1); // exibe 'Passe 2 argumentos!' /* ou */ myfunc(1, 2, 3); // exibe 'Passe 2 argumentos!'
O callee pode ser utilizado em recursões onde não se conhece o nome da função, como as funções anônimas:
function myfunc() { return function(a) { if (a > 10) { return a; } return arguments.callee(a + 1); } // ... } myfunc()(1);
Deixe um comentário |

