javaScript 函数
给我你的怀抱
给我你的怀抱 2017-06-26 10:53:22
[JavaScript讨论组]
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.

扔个三星炸死你
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函数会覆盖外面定义的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号