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
没调用Foo的时候
调用Foo()的时候
调用后Foo里面的
return this
的确指向window,所以最后结果是1.Foo().getName(); 执行的是Foo中的getName
你console.log(Foo())看看,确定是window?
Foo函数里面的getName不是用var申明的,所以是全局的,所以当Foo运行时函数里面的getName函数会覆盖外面定义的