生成随机日期后无法调用getFullYear获取年份,请求技术协助
问题原因及解决方法
你当前的问题是dateOfInterest存储的是函数本身,而不是调用函数后返回的Date对象,函数没有getFullYear()方法,自然会报错。
修正方案一:先定义函数,再调用赋值
// 定义生成随机日期的函数 function randomDate(start, end) { return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())); } // 调用函数,把返回的Date实例赋值给dateOfInterest var dateOfInterest = randomDate(new Date(2012, 0, 1), new Date()); // 此时就能正常获取年份 var yearOfInterest = dateOfInterest.getFullYear();
修正方案二:立即执行函数表达式(IIFE)
如果不想单独定义函数,也可以用立即执行的方式直接得到Date实例:
var dateOfInterest = (function randomDate(start, end) { return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime())); })(new Date(2012, 0, 1), new Date()); var yearOfInterest = dateOfInterest.getFullYear();
核心逻辑就是:必须确保dateOfInterest是Date对象实例,而不是函数本身,这样才能调用getFullYear()方法。
内容的提问来源于stack exchange,提问作者devlibrah
相关产品推荐
相关产品推荐

