function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
Why does the above code output 1;
After foo() is run, this is output. This is the window object. Does getName in foo() become a global function expression? And the following var getName is also a function expression; why is it printed? The result is 1;
foo, after execution, is it equivalent to the following code?
getName = function(){
console.log(1);
};
var getName = function (){
console.log(4)
};
getName(); //4
When Foo is not called
When calling Foo()
After the call,
return this
in Foo does point to window, so the final result is 1.Foo().getName(); executes getName in Foo
Check console.log(Foo()), are you sure it is window?
The getName in the Foo function is not declared with var, so it is global, so when Foo is run, the getName function inside the function will overwrite the one defined outside