Passando uma função e outros parâmetros para outra função em javascript

Seguindo o que comecei a explicar nesse post sobre como passar funções como parâmetro para outra no javascript, vou mostrar agora rapidamente como passar outros parâmetros – texto, string, o que você precisar.

Esse exemplo abaixo funciona para o caso de você saber exatamente quantos parâmetros serão passados para a função e quantos recebidos pela função de callback.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function wrapper(par1, par2) {
    //verifica se o último parâmetro é uma função para chamá-la;
    //os demais parámetros são repassados para a função  
    if(arguments.length>0) {
        var lastArgument = arguments[arguments.length-1];
        if(typeof(lastArgument)=="function") {
            lastArgument.call(this, par1, par2);   
        }
    }
}
function myFunction(par1, par2) {
    alert(par1);
    alert(par2);
}
wrapper("a", "b", myFunction);
</script>
</head>
<body>
</body>
</html>

O exemplo funciona da seguinte forma: a função wrapper recebe duas strings e uma função. Nela, verifica-se se o último parâmetro é uma funcão e, se for, ela chama essa função passando essas duas strings como parâmetro.
Note que esse exemplo vale para a função sendo passada como último parâmetro. Ela pode ser passada em outra ordem, mas aí deve ser feita a devida checagem.

Nos próximos post, mostro como receber uma quantidade aleatória de parâmetros e tratar de repassá-los (usando JSON) e como definir funções de callback específicas dependendo de condições na wrapper.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *