No importa donde lo pongas. Los navegadores lo ejecutarán antes de dibujarte la página. pero hay una diferencia. Si pones el script en el head, cuando se ejecute javascript, no existirá ningún elemento HTML en su contexto, asi que si ejecutas instrucciones de recuperación de elementos HTML como document.getElemenById, nunca encontrarán nada. Así que algunos gurús eligieron poner el script abajo del todo como último elemento del BODY. Así, javascript podría manipular cualquier elemento del DOM cuando se ejecutase.
Pero esa tampoco es la mejor forma de hacerlo. Lo mejor es meter el código en el head, y utilizar los eventos de el objeto window para ejecutar código que necesite trabajar con el DOM. Puedes declarar funciones y variables fuera de eevento load. Lo que no puedes hacer fuera del load es llamar a la función para que recupere o actúe sobre los elementos. Por ejmplo:
Código Javascript
:
Ver original<script>
function meterTexto(id, texto){
var elemento=document.getElementById(id);
if (elemento) elemento.innerHTML=texto;
}
window.onload=function(){
meterTexto("contenido","Este es el div de contenido");
}
</script>
Si conoces otros lenguages como JAVA o C, imagina que window.onload=function(){ ..... } ó window.addEventListener("load", function(){ ...... }) es el MAIN; que sólo se ejecutará cuando absolutamente toda la página HTML y scripts estén cargados. pero ojo, puede que haya imágenes que aún estén descargándose, con la página HTML me refiero a su árbol DOM.