了解回调函数中的“this” [duplicate]

Understanding "this" within callback functions [duplicate]

提问人:sangmin park 提问时间:12/21/2020 更新时间:12/21/2020 访问量:29

问:

我试图通过各种代码示例来理解“this”指的是什么。到目前为止,我知道“这个”取决于谁称呼它或如何称呼它。例如:

let user = {
  firstName: "Ilya",
  sayHi() {
    let arrow = () => console.log(this.firstName);
    arrow();
  },
  sayHi2() {
    let func = function() {
      console.log(this.firstName)
    }
    return func;
  }
};

user.sayHi(); // Ilya
let hi = user.sayHi; 
hi(); // undefined 
user.func = user.sayHi2()
user.func() // Ilya

上面的例子对我来说很有意义,我还了解到箭头函数没有“this,因此它通过其外部词法环境搜索“this”。

现在,我正在尝试使用回调来“这个”。

let user = {
  firstName: "Bob",
  sayHi(func) {
    func()
  }
}

function hello() {
  console.log("hello " + this.firstName);
}

user.sayHi(hello);
user.sayHi(()=>{ console.log("hello " + this.firstName)});

为什么返回 undefined?“this”不是指对象,因为是由 调用的吗?或者当函数作为回调执行时,“this”值是否不同?this.firstNameusersayHi()user

javascript 回调 这个

评论

0赞 charlietfl 12/21/2020
“'这个'不是指用户吗”。箭头函数没有显式this
0赞 sangmin park 12/21/2020
箭头函数在其外部词法环境中使用它。那么,这是否意味着这将引用 sayHi() 词汇环境的外部 this?

答: 暂无答案