Javascript-Funktion
给我你的怀抱
给我你的怀抱 2017-06-26 10:53:22
0
6
772
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
给我你的怀抱
给我你的怀抱

Antworte allen(6)
小葫芦

没调用Foo的时候

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

调用Foo()的时候

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

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

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

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

阿神
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()
代言

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

ringa_lee

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage