Deux fonctions avec le même nom en JavaScript - comment cela peut-il fonctionner?

Autant que je sache, function foo() { aaa(); } est juste var foo = function(){ aaa() } en JavaScript. Ainsi, l'ajout de function foo() { bbb(); } devrait remplacer le foo variable, ou d'ignorer la deuxième définition - qui n'est pas le point. Le point est qu'il doit y avoir une variable foo.

Donc, dans cet exemple, le me variable doit pas être correctement résolus à partir à l'intérieur de l'méthodes et il n'est pas à Explorer 8 🙂. J'ai pris cette exemple en essayant de les envelopper dans une autre fermeture d'où ( var ) me, mais j'ai été surpris qu'il n'est pas nécessaire:

    var foo = {
        bar1 : function me() {
            var index = 1;
            alert(me);
        },
        bar2 : function me() {
            var index = 2;
            alert(me);
        }    
    };

    foo.bar1(); //Shows the first one
    foo.bar2(); //Shows the second one

Démo: http://jsfiddle.net/W5dqy/5/

J'ai lu votre question 3 fois et je ne comprend toujours pas votre problème
C'est un peu ésotérique question de savoir quand et comment les noms de fonction sont créés et ce qu'ils ont. Et oui, c'est un peu difficile à suivre. 🙂
Je suis désolé si le problème est dans mon anglais, je ne suis pas un locuteur natif.

OriginalL'auteur tillda | 2011-02-28