myfunc() s'exécute correctement lorsqu'il est appelé depuis le même fichier js. mais il est indéfini (Firebug) lorsqu'il est appelé à partir d'une page HTML:La fonction JavaScript dans le fichier externe est indéfinie lorsqu'elle est déclarée d'une certaine manière
fichier JS:
$(function() {
myfunc() {
alert('inside myfunc');
}
alert('outside myfunc');
myfunc(); //this successfully runs myfunc()
});
HTML:
<script>
$(function() {
myfunc(); //this doesn't run myfunc(). It's undefined
});
</script>
Mais quand je change de déclaration myfunc() à:
myfunc = function() { ... }
Il n'est plus indéfini et fonctionne correctement.
Désolé pour cette question très noob, mais qu'est-ce qui vient de se passer? Pourquoi cela a-t-il fonctionné quand j'ai changé la façon dont j'ai déclaré la fonction?
Il convient de noter que l'enveloppe de fonction anonyme 'function() {...}' est utilisée principalement à cette fin! Si vous voulez définir une fonction globalement, laissez-la en dehors de l'encapsuleur. Si vous devez écrire une variable globale dans une portée locale, il est bon (et requis en ECMA262-5 Strict Mode) de déclarer 'var myvar;' dans la portée globale, en dehors du wrapper. – bobince