javaScript 函数
给我你的怀抱
给我你的怀抱 2017-06-26 10:53:22
0
6
675
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
给我你的怀抱
给我你的怀抱

全部回复(6)
小葫芦

没调用Foo的时候

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

调用Foo()的时候

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

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

扔个三星炸死你

雷雷

黄舟

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

阿神

雷雷 雷雷

代言

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

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!