javascript作用域问题:函数执行的上下文,有没有同学帮忙解释下下面这道题目

第一题

var length = 10;
function fn(){
    console.log(this.length);
}

var obj = {
    length:5,
    method:function(){
        fn(); //这里为啥返回10???,帮忙解释下这里谢谢
        arguments[0]() // 这里我知道为什么返回2
    }
}

obj.method(fn,1)

第二题

var length = 10;
function fn(){
    console.log(this.length);
}

var obj = {
    length:5,
    method:function(){
        console.log(this.length); //这里明明表示函数的作用域是obj啊,为啥下面的就变了
        
        fn(); // 还是不知道这里为啥是10
    }
}

obj.method(fn,1)
阅读 276
评论
    5 个回答
    • 3.1k

    第一题返回10, 是因为你单独调用的fn(), 而并不是xxx.fn, 所以fn里面的this指向window
    第二题一个意思

      相似问题
      推荐文章