suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript-Funktion

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

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



          Foo().getName(); 

Warum gibt der obige Code 1;

aus?

Nachdem foo() ausgeführt wurde, wird dies das Fensterobjekt in foo() sein. Und die folgende Variable getName ist auch ein Funktionsausdruck

foo, entspricht es nach der Ausführung dem folgenden Code?

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

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



          getName(); //4
给我你的怀抱给我你的怀抱2713 Tage vor753

Antworte allen(6)Ich werde antworten

  • 高洛峰

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

    没调用Foo的时候

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

    调用Foo()的时候

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

    调用后Foo里面的return this的确指向window,所以最后结果是1.

    Antwort
    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()

    Antwort
    0
  • 黄舟

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

    Foo().getName(); 执行的是Foo中的getName

    Antwort
    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()

    Antwort
    0
  • 代言

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

    你console.log(Foo())看看,确定是window?

    Antwort
    0
  • ringa_lee

    ringa_lee2017-06-26 10:55:22

    Foo函数里面的getName不是用var申明的,所以是全局的,所以当Foo运行时函数里面的getName函数会覆盖外面定义的

    Antwort
    0
  • StornierenAntwort