function Foo(){
getName = function(){
console.log(1);
};
return this;
}
var getName = function (){
console.log(4)
};
Foo().getName();
上面的代码为什么输出的是1;
foo()运行之后输出了this,这个this是window对象,foo()中的getName是不是也就成了全局下的函数表达式;而下面的var getName也是一个函数表达式;为什么打印结果是1;
foo,执行后它等同于于下面这个代码么?
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函数会覆盖外面定义的