javascript - this问题
仅有的幸福
仅有的幸福 2017-05-19 10:23:39
[JavaScript讨论组]

为什么打印 undefined?怎么才能让这段代码分别打印global,obj和inner

var scope = 'global';

function log() {
    console.log(this.scope)
}

var obj = {
    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log()
    }
};

obj.do();
仅有的幸福
仅有的幸福

全部回复(5)
高洛峰

最后对象志向window,window.scope,返回的才是undefined

高洛峰
var scope = 'global';

function log() {
    console.log(this.scope)
}

var obj = {
    scope: 'obj',
    do: function () {
        var scope = 'inner';
        log();
        console.log(scope);
    }
};
obj.do();
console.log(obj.scope);
曾经蜡笔没有小新

this指向问题
JS函数不同执行环境下的this指向

给我你的怀抱

首先,这段代码打印出来的应该是global不是undefined,然后你这种写法inner是不可能通过this.scope来调用的,剩下的就去看看this指向吧

PHP中文网

var scope = 'global';

function log() {

console.log(this.scope)

}

var obj = {

scope: 'obj',
do: function () {
    var scope = 'inner';
    log();   //gobal
    console.log(this.scope);  //this指向obj,obj作用域中找到scope:obj
    console.log(scope);    //局部的inner
}

};

obj.do();

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

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