为什么我的函数不返回值?

时间:2019-11-28 15:38:50

标签: javascript function return

我的johnTipAvg函数是控制台记录平均值,但是由于某种原因它没有返回平均值。我在底部有markTipAvg,它返回的值很好,所以我真的不明白为什么这不起作用...

我检查了错别字,找不到任何东西。同样,弄乱了函数的位置,我在函数调用周围移动。我在哪里出错了?

var john = {
  bills: [124, 48, 268, 180, 42],
  tips: [],
  finalBill: [],
  calcTip: function(bill) {

    for (var i = 0; i < bill.length; i++) {
      if (bill[i] < 50) {
        this.tips.push(bill[i] * .2);
        this.finalBill.push(bill[i] + (bill[i] * .2));
      } else if (bill[i] > 50 && bill[i] < 200) {
        this.tips.push(bill[i] * .15);
        this.finalBill.push(bill[i] + (bill[i] * .15));
      } else {
        this.tips.push(bill[i] * .10);
        this.finalBill.push(bill[i] + (bill[i] * .10));
      }
    }
  }
}

function johnTipAvg(tip) {
  var sum = 0;

  for (var i = 0; i < tip.length; i++) {
    sum += tip[i];
  }

  var avg = sum / (tip.length - 1);

  console.log(avg);

  return avg;
}

john.calcTip(john.bills);
johnTipAvg(john.tips);

var mark = {
  bills: [77, 375, 110, 45],
  tips: []
}

function markCalcTips(bill) {
  var sum;

  for (var i = 0; i < bill.length; i++) {
    if (bill[i] < 100) {
      mark.tips.push(bill[i] * .2);
    } else if (bill[i] > 100 && bill[i] < 300) {
      mark.tips.push(bill[i] * .1);
    } else {
      mark.tips.push(bill[i] * .25);
    }
  }
}

function markTipAvg(tip) {
  var sum = 0;

  for (var i = 0; i < tip.length; i++) {
    sum += tip[i];
  }

  var avg = sum / (tip.length - 1);

  return avg;
}

markCalcTips(mark.bills);
markTipAvg(mark.tips);

1 个答案:

答案 0 :(得分:0)

如下面的代码片段所示,

markTipAvg()恢复正常:

var john = {
    bills: [124, 48, 268, 180, 42],
    tips: [],
    finalBill: [],
    calcTip: function(bill){

        for(var i = 0; i < bill.length; i++){
            if(bill[i] < 50){
               this.tips.push(bill[i] * .2);
               this.finalBill.push(bill[i] + (bill[i] * .2));
            } else if(bill[i] > 50 && bill[i] < 200){
                this.tips.push(bill[i] * .15);
                this.finalBill.push(bill[i] + (bill[i] * .15));
            } else {
                this.tips.push(bill[i] * .10);
                this.finalBill.push(bill[i] + (bill[i] * .10));
            }
        }
    }
}

function johnTipAvg(tip){
    var sum = 0;

    for(var i = 0; i < tip.length; i++){
        sum += tip[i];
    }

    var avg = sum / (tip.length -1);

    console.log(avg);

    return avg;
}

console.log("john.calcTip(john.bills) = " + john.calcTip(john.bills));
console.log("johnTipAvg(john.tips) = " + johnTipAvg(john.tips));

var mark = {
    bills: [77, 375, 110, 45],
    tips: []
}

function markCalcTips(bill){
    var sum;

    for(var i = 0; i < bill.length; i++){
        if(bill[i] < 100){
            mark.tips.push(bill[i] * .2);
        } else if(bill[i] > 100 && bill[i] < 300){
            mark.tips.push(bill[i] * .1);
        } else {
            mark.tips.push(bill[i] * .25);
        }
    }
}

function markTipAvg(tip){
    var sum = 0;

    for(var i = 0; i < tip.length; i++){
        sum += tip[i];
    }

    var avg = sum / (tip.length -1);

    return avg;
}

console.log("markCalcTips(mark.bills) = " + markCalcTips(mark.bills));
console.log("markTipAvg(mark.tips) = " + markTipAvg(mark.tips));

相关问题