对使用匿名函数和 const 的房子“this”感到困惑

时间:2021-06-26 19:32:26

标签: javascript object this

我有以下代码

const name = 'Jordan'

const myObj = {
  getName: function() {
    return this.name
  },
  getNameAnonymous: () => {
    return this.name
  }

}

console.log(myObj.getName())
console.log(myObj.getNameAnonymous())

运行时,getName 返回 undefinedgetNameAnonymous 返回 "result"(当我在 JSFiddle 中运行它但当我使用 Node 运行它时,我得到 undefined )

据我了解,对象内的箭头函数内的 this 绑定到父作用域,那么为什么 getNameAnonymous 不返回 Jordan?为什么 getName 返回 undefined 而不是 ReferenceError?

1 个答案:

答案 0 :(得分:-1)

函数声明不会有引用错误,因为 this 在那里有一个值(基于你对函数的调用)。它属于您的对象 myObj

将您的 const 替换为 var,您将看到 Jordan 已被记录。 Codepen

var 变量成为 window 对象的属性。 const/让不要。检查What's the difference between using "let" and "var"?

相关问题