No es que para que una función sea reutilizable sea necesario usar funciones anónimas, sino que para el caso que nos ocupa sí.
Te explico:
Código Javascript
:
Ver originalwindow.onload = function()
{
blink(document.getElementById("textoParpadeante"));
blink(document.getElementById("textoParpadeante2"));
}
function blink_aux(element)
{
element.style.visibility = (element.style.visibility == "visible") ? "hidden" : "visible";
}
//A la función le pasas el elemento que quieres que parpadee
function blink(element)
{
var id;
/*
Para poder referenciar el elemento en la llamada a la función auxiliar blink_aux, es necesario utilizar una función anónima que englobe la llamada a la función blink_aux. Esto es así, porque a la función setInterval se le pasa una referencia a una función (y al pasar una referencia -sólo la función en si- no puedes pasarle los parámetros). Para ello se usa una función anónima.
*/
id = setInterval(function(){blink_aux(element);}, 500);
element.onmouseover = function()
{
clearInterval(id);
}
element.onmouseout = function()
{
id = setInterval(function(){blink_aux(element);}, 500);
}
}
EDITO:
No puedes pasarle
id = setInterval( "blink_aux(element)", 500 ); porque la referencia a la variable
element se pierde al salir de la función
blink.
No ocurre esto mismo en la función anónima gracias a las closures (la referencia a
element sigue viva a pesar de haber salido del ámbito de la función
blink.