2011-11-16 23 views
5

Entiendo que JS realiza una compilación previa de funciones antes de ejecutar el código. Entonces el orden de la función no importa. Pero, el orden de las funciones se convierte de algún modo en un problema cuando se vinculan archivos * .js.¿Cuándo importa el orden de las funciones?

Por ejemplo,

<script src="@Url.Content("~/Scripts/Personal/MyJScript.js")" type="text/javascript"></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     hello(); 
     afterCall(); 
     hello2(); //fails, defined in MyJScript2.js 

    }); 

    function afterCall() { 
     alert('inline function defined after call'); 
    } 
</script> 

<script src="@Url.Content("~/Scripts/Personal/MyJScript2.js")" type="text/javascript"></script> 

En el código anterior, la función de hello2() se define en un archivo que está vinculado después se define la llamada. La llamada falla. Entonces, intuitivamente, supongo que ahora el orden de función hace que sea importante en este caso.

Considerando que realizo $(document).ready, el documento debe estar lo más preparado posible. ¿Entonces, por qué pasa ésto?


a lo solicitado, aquí está el código HTML del lado del cliente es probable que se ejecutan

<body> 
    <script src="/Scripts/Personal/MyJScript.js" type="text/javascript"></script> 


<script type="text/javascript"> 
    $(document).ready(function() { 
     hello(); 
     afterCall(); 
     hello2(); //fails 

    }); 

    function afterCall() { 
     alert('inline function defined after call'); 
    } 
</script> 

<script src="/Scripts/Personal/MyJScript2.js" type="text/javascript"></script> 

</body> 
+0

Cuando en el código HTML general aparecen esos '

0

Las etiquetas script en el cuerpo (o tratan de ser) antes de que las solicitudes adicionales de los archivos JS externos han completado.

Es menos una cuestión de orden de declaración de función que el orden de carga y el tiempo.

0

en lugar de utilizar una etiqueta de script para importar MyJscript2, podría utilizar getScript para agarrar la secuencia de comandos y ejecutar algunas funciones en la devolución de llamada éxito.

Cuestiones relacionadas