Non capisco bene come viene interpretato Javascript...

Perché questo codice

codice:
<script type="text/javascript">
			<!--
				var imgPath       = new Array();
				var imgName       = new Array();
				var imgDidascalia = new Array();
				var imgHeight 	  = new Array();
				var imgWidth	  = new Array();
				
				var imgload = 'http://localhost/eclipse/Immagini//Templates/photogallery/loading.gif';
				
			
				imgPath[0] = "http://localhost/eclipse/Immagini/Gallery/3.jpg";
				imgName[0] = "I danni sulla Sp 13 “Coronella – Ponte Panfilia”.";
				imgDidascalia[0] = "I danni sulla Sp 13 “Coronella – Ponte Panfilia”.";
				imgWidth[0] = "450";
				imgHeight[0] = "337";
			-->
			</script>
<script src="http://localhost/eclipse/Engine/JS/photogallery/cambia_immagine.js" type="text/javascript"></script>
Funziona senza problemi e questo

codice:

<script type="text/javascript">
// <!--
	var imgPath       = new Array();
	var imgName       = new Array();
	var imgDidascalia = new Array();
	var imgHeight 	  = new Array();
	var imgWidth	  = new Array();
		
	var imgload = 'http://localhost/eclipse/Immagini/Templates/photogallery/loading.gif';
			
function LightboxDelegate(url,caption) {
	imgPath[0] = url;
	imgName[0] = caption;
	imgDidascalia[0] = "";

	cambiaImage(0)
}


// -->
</script>

<script src="http://localhost/eclipse/Engine/JS/photogallery/cambia_immagine.js" type="text/javascript"></script>
no?

In pratica la differenza tra i due codici è che il primo le variabili globali imgPath, ImgName e imgDidascalia vengono valorizzate subito, nel secondo vengono valorizzate quando viene chiamata la funzione.

Nel primo caso lo script "cambia_immagine.js" legge correttamente le variabili, nel secondo gli arrivano vuote. Eppure (pensavo che) essendo le variabili globali, le modifiche apportate dalla prima funzione vengono viste anche dalla seconda.

Bho....