Coincido en que es bueno que entiendas conceptos como "ámbito o scope", "objetos, herencia y prototipos", "funciones que retornan funciones" y "closures". Por ejemplo saber lo anterior te serviría para entender que, en jquery, on() es un método y que su segundo parámetro es una función callback. En español hay un blog muy bueno que se llama
etnasoft en donde tratan lo dicho.
Te comparto un equivalente al código anterior usando jquery:
Código HTML:
Ver original<li class="link-a"><a id="autos" href="#">Autos
</a></li> <li class="link-a"><a id="animales" href="#">Animales
</a></li>
Código Javascript
:
Ver originalvar variable_global = "soy una propiedad del objeto window!";
function funcionGlobal(param){
return param;
}
$(document).on('ready', function(){
alert("el documento está listo");
$("#autos").on('click', function(){
alert(variable_global); //puedes acceder a una variable global desde cualquier punto del script
});
$("#animales").on('click', function(){
alert(funcionGlobal(variable_global)); //las funciones globales son métodos del objeto window y también pueden ser accedidas desde cualquier punto del script
});
});
Por ejemplo, en lugar de usar dos funciones, usas funcionGlobal(), luego si necesitas lógica dentro de ella puedes recibir parámetros y anidarle condicionales (if, else, switch) o alguna estructura de control (while, for)
Suerte con eso.
pd: si te dije "googlea" es porque si pones "manejadores de eventos semanticos" entre los primeros resultados habrá un apartado de un libro de introduccion a javascript de la página librosweb.es en donde explican muy bien como poner cada cosa en su lugar, es decir, separar el código html del javascript. Mezclar código en un mismo documento trae problemas a la hora de volver sobre ese código, simplemente es más dificil de entender (googlea "código espagueti / spaghetti code"). En serio, no hay mala onda, al contrario. Si aún no obtienes la respuesta que esperas, pregunta nuevamente, creo poder ayudarte con esto, pero siempre es un 50% de esfuerzo de cada parte. Abrazo.