5
Capisco che JS esegua una pre-compilazione di funzioni prima di eseguire il codice. Quindi l'ordine di funzione non ha importanza. Ma, l'ordine delle funzioni diventa in qualche modo un problema quando si collegano i file * .js.Quando l'ordine di funzione è importante?
Ad esempio,
<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>
Nel codice precedente, la funzione hello2()
è definita in un file che viene collegato dopo che la chiamata è definito. La chiamata fallisce. Quindi, intuitivamente, suppongo che ora l'ordine di funzione contenga il numero in questo caso.
Considerando mi esibisco $(document).ready
, il documento dovrebbe essere pronto, come si arriva. Quindi, perché succede?
Come richiesto, ecco il codice HTML lato client sarà probabilmente eseguiti
<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>
Dove nel codice HTML complessiva appaiono quelle
I tag script nel corpo (o cercano di essere) prima che le richieste supplementari per i file JS esterni hanno completato.
È meno un problema di ordine di dichiarazione funzione di ordine di caricamento e tempi.
fonte
2011-11-16 20:16:28
Invece di utilizzare un tag script per importare MyJscript2, si potrebbe usare getScript per afferrare lo script ed eseguire alcune funzionalità di callback successo.
fonte
2011-11-16 20:50:02 jbabey