recherche

Maison  >  Questions et réponses  >  le corps du texte

fonction javascript

function Foo(){
            getName = function(){
                console.log(1);
            };
           return this;
        }

        var getName = function (){ 
            console.log(4)
        };



          Foo().getName(); 

Pourquoi le code ci-dessus génère-t-il 1 ;

Après l'exécution de foo(), ceci est la sortie. Il s'agit de l'objet window. Est-ce que getName dans foo() devient une expression de fonction globale ? Et la variable suivante getName est également une expression de fonction : pourquoi le résultat d'impression est-il 1 ; 

foo, après exécution, est-ce équivalent au code suivant ?

getName = function(){
            console.log(1);
        };

        var getName = function (){ 
            console.log(4)
        };



          getName(); //4
给我你的怀抱给我你的怀抱2713 Il y a quelques jours755

répondre à tous(6)je répondrai

  • 高洛峰

    高洛峰2017-06-26 10:55:22

    Quand Foo n'est pas appelé

    window.getName = function(){
        console.log(4);
    }
    

    Lorsque vous appelez Foo()

    getName = function(){
                    console.log(1);
                };
    // 相当于更改了 window.getName

    Après l'appel, return this dans Foo pointe vers la fenêtre, donc le résultat final est 1.

    répondre
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:55:22

    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    //全局声明一个变量getName
    var getName = function (){ 
        console.log(4)
    };
    //重新赋值
    getName = function () {
        console.log(1)
    }
    //最终打印结果为1
    window.getName()

    répondre
    0
  • 黄舟

    黄舟2017-06-26 10:55:22

    Foo().getName(); exécute getName dans Foo

    répondre
    0
  • 阿神

    阿神2017-06-26 10:55:22

    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    
    var getName = function (){ 
        console.log(4)
    };
    
    Foo().getName();
    function Foo(){
        getName = function(){
            console.log(1);
        };
        return this;
    }
    
    var getName = function (){ 
        console.log(4)
    };
    
    getName = function () {
        console.log(1)
    }
    
    window.getName()

    répondre
    0
  • 代言

    代言2017-06-26 10:55:22

    Vérifiez console.log(Foo()), êtes-vous sûr que c'est une fenêtre ?

    répondre
    0
  • ringa_lee

    ringa_lee2017-06-26 10:55:22

    Le getName dans la fonction Foo n'est pas déclaré avec var, il est donc global, donc lorsque Foo est exécuté, la fonction getName à l'intérieur de la fonction écrasera celle définie à l'extérieur

    répondre
    0
  • Annulerrépondre