我有一个对象,其属性值指定军事时间内的小时和分钟。我正在尝试使用另一个使用对象外部函数的属性来计算到12小时时间的时间并将这些值保存为附加属性。
我有以下代码:
$(function () {
console.log( startTime.twelveHourTime );
});
var startTime = {
militaryTime: {
hours: 23,
minutes: 30
},
twelveHourTime: convertToTwelveHourTime (this.militaryTime)
/* I would like this to result in
twelveHourTime: {
hours: 11,
minutes: 30,
amOrpm: 'PM'
}*/
};
function convertToTwelveHourTime (militaryTime) {
var twelveHourTime = {
hours: 0,
minutes: 0,
amOrpm: ''
};
if(militaryTime.hours > 12){
twelveHourTime.hours = militaryTime.hours - 12;
}else{
twelveHourTime.hours = militaryTime.hours;
}
twelveHourTime.minutes = militaryTime.minutes;
if(militaryTime.hours > 11){
twelveHourTime.amOrpm = 'PM';
}else{
twelveHourTime.amOrpm = 'AM';
}
return twelveHourTime;
}
运行此代码会导致控制台出现以下错误:
Uncaught TypeError: Cannot read property 'hours' of undefined
指的是if(militaryTime.hours > 12)
行。
和
Uncaught TypeError: Cannot read property 'twelveHourTime' of undefined
指的是最初的console.log
。
为什么会发生这种情况?如何修复此代码?