El navegador web está programado para ejecutar cuando carga una pagina y en cuanto lo lea, todo código que se encuentre dentro de una etiqueta <SCRIPT>, independientemente de si está en un archivo aparte o no. Lo ejecuta en cuanto lo lee, no espera a que la página termine de cargarse (para eso existe el eventos window.onload).
El código javascript puesto dentro de elementos HTML no se ejecuta, salvo que se produzca el evento al que está asociado (onclick, onchange, etc). Eso quiere decir que si no depende de ningún script, siempre funcionará. Y en el caso de que dependa de otro script, funcionará si aquél script ya fue cargado en memoria.
http://jsfiddle.net/marlanga/Ttgvj/
Particularmente, siempre evito poner javascript dentro de los elementos HTML. Igual que hace años que se recomienda sacar todo el formato visual de los elementos HTML a las hojas de estilos, quedando prohibido usar el atributo STYLE de los elementos, con javascript pasa tres cuartos de lo mismo.
para enlazar elementos HTML y javascript ya tenemos los
elemento.ONevento o su forma más elegante elemento.addEventListener(evento,funcion);
Esa función también tiene un tercer parámetro, que sirve para elegir la forma en la que quieres que se disparen los eventos (en el DOM, si del padre al hijo, o del hijo al padre).