我有以下代码
const name = 'Jordan'
const myObj = {
getName: function() {
return this.name
},
getNameAnonymous: () => {
return this.name
}
}
console.log(myObj.getName())
console.log(myObj.getNameAnonymous())
运行时,getName
返回 undefined
和 getNameAnonymous
返回 "result"
(当我在 JSFiddle 中运行它但当我使用 Node 运行它时,我得到 undefined
)
据我了解,对象内的箭头函数内的 this
绑定到父作用域,那么为什么 getNameAnonymous
不返回 Jordan
?为什么 getName
返回 undefined
而不是 ReferenceError?
答案 0 :(得分:-1)
函数声明不会有引用错误,因为 this
在那里有一个值(基于你对函数的调用)。它属于您的对象 myObj
。
将您的 const 替换为 var,您将看到 Jordan 已被记录。 Codepen
var 变量成为 window 对象的属性。 const/让不要。检查What's the difference between using "let" and "var"?