首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么这种JS函数风格在检索所需数据时不起作用

为什么这种JS函数风格在检索所需数据时不起作用
EN

Stack Overflow用户
提问于 2019-05-21 04:41:52
回答 1查看 71关注 0票数 0

我有两个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,所以如果能得到详细而直接的答案将不胜感激。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-05-21 04:46:09

正如MDN中所述,箭头函数不绑定到this (除了其他关键字之外)。在第二种情况下,this是未定义的,从而产生TypeError。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56227914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档