为什么我在这个函数中没有定义

Why am I getting undefined in this function?

本文关键字:定义 函数 为什么      更新时间:2023-09-26

我遇到了一个问题,保姆根据时间的不同赚取不同的费率:

保姆-不早于下午5:00开始-不迟于凌晨4点离开-从开始到就寝,每小时可获得12美元的报酬-从睡觉到午夜,每小时可获得8美元的报酬-从午夜到工作结束,工资为每小时16美元-获得全小时(无小数小时(的报酬

我想知道,当我在这个函数中通过时间时,为什么我会得到未定义?

 function calculatePay (startTime, bedTime, endTime){
      function formatTime(time){
        if (time.indexOf('00') === -1){
          time = Number(time.split(":").shift()) + 1;
        } else {
          time = Number(time.split(":").shift());
        }
        if (time < 5) {
          time = time + 12;
        }
        return time;
      };
      var start = formatTime(startTime);
      var bedtime = formatTime(bedTime);
      var end = formatTime(endTime);
      var scheduleRange = {
        start: 5,
        lateNight: 12,
        end: 16,
      }
      var payrate = {
        beforeBed: 12,
        sleeping: 8,
        afterMidnight: 16
      }
      var calculateBeforeBed = function (start, bedtime) {
          if (bedtime > start && bedtime <= scheduleRange.lateNight){
          var beforeBedEarned = (bedtime - start) * payrate.beforeBed;
          return beforeBedEarned;
        } else if (bedtime > scheduleRange.lateNight) {
          var beforeBedEarned = (scheduleRange.lateNight - start) * payrate.beforeBed;
          return beforeBedEarned;
        } else {
          return 0;
        }
      };
      var calculateAfterBed = function (start, bedtime, end) {
        if (bedtime > start && bedtime <= scheduleRange.lateNight && bedtime <= end) {
          var afterBedEarned = (scheduleRange.lateNight - bedtime) * payrate.sleeping;
          return afterBedEarned;
        } else if (bedtime <= start && end <= scheduleRange.lateNight){
          afterBedEarned = (end - start) * payrate.sleeping;
          return afterBedEarned;
        } else if (bedtime <= start && end > scheduleRange.lateNight){
          afterBedEarned = (scheduleRange.lateNight - start) * payrate.sleeping;
          return afterBedEarned;
        }
        else {
          return 0;
        }
      };
      var calculateAfterMidnight = function (start, end) {
        if (end > scheduleRange.lateNight && start <= scheduleRange.lateNight) {
          var lateNightEarned = (end - scheduleRange.lateNight) * payrate.afterMidnight;
          return lateNightEarned;
        } else if (end > scheduleRange.lateNight && start > scheduleRange.lateNight) {
          lateNightEarned = (end - start) * payrate.afterMidnight;
          return lateNightEarned;
        } else {
          return 0;
        }
      };
      function finalInvoice (start, bedtime, end){
        if(start >= scheduleRange.start && end <= scheduleRange.end){
          var pay = calculateBeforeBed(start, bedtime) + calculateAfterBed(start, bedtime, end)+ calculateAfterMidnight(start, end);
          return pay;
          };
        };
    }
    calculatePay("7:00", "10:00", "1:00");

因为您的函数没有return语句

function voidsum(a, b, c) {
  var result = a + b + c;
}
function sum(a, b, c) {
  var result = a + b + c;
  
  return result;
}
console.log('voidfn', voidsum(123, 321, 231));
console.log('sum', sum(123, 321, 231));