我有两个JS函数做同样的事情:
1)
var person = {
firstName: 'John',
surname: 'Jones',
dob: new Date('1990-01-01'),
isMarried: false,
age: function() {
return new Date().getFullYear() - this.dob.getFullYear();
}
};
2)
var person = {
firstName: 'John',
surname: 'Jones',
dob: new Date('1990-01-01'),
isMarried: false,
age: () => {
return new Date().getFullYear() - this.dob.getFullYear();
}
};
请注意,这两段代码之间唯一的区别是如何描述age()函数。据我所知,前者使用函数语句,而后者使用函数表达式。
然而,问题是,只有前一段代码返回预期的数据,而后一段代码返回以下错误:
Uncaught TypeError: Cannot read property 'getFullYear' of undefined
at Object.age
我在试着理解为什么一个可以工作,而另一个不能,而两者在语法上都是正确的?
我刚刚开始深入学习JS,所以如果能得到详细而直接的答案将不胜感激。谢谢。
发布于 2019-05-21 04:46:09
正如MDN中所述,箭头函数不绑定到this
(除了其他关键字之外)。在第二种情况下,this
是未定义的,从而产生TypeError。
https://stackoverflow.com/questions/56227914
复制相似问题