开发者社区 问答 正文

关于this的问题

function foo(){
    console.log(this.a)
}
function doFoo(fn){
    var a = "doFoo";
    fn();
}
var obj = {
    a:2,
    foo:foo
};
var a = "global";
doFoo(obj.foo);    //global

为什么输出的是global而不是doFoo?

展开
收起
a123456678 2016-03-11 14:00:04 1774 分享 版权
1 条回答
写回答
取消 提交回答
  • 这就是一个局部变量的问题,将问题往深处看,本质的调用如下所示:

    function foo(){
        console.log(this.a)
    }
    function doFoo(){
        var a = "doFoo";
        foo();
    }
    var a = "global";
    doFoo();

    输出也是global,因为变量没有进行传递,foo中只识别父级作用域和本作用域内的变量,调用者的变量是不识别的

    2019-07-17 18:59:08
    赞同 展开评论
问答地址: