javascript - 为什么我的函数没有返回值?
问题描述
我的 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);
解决方案
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));
推荐阅读
- javascript - ReactJS - 在更新表单中预填充动态字段
- php - 为什么 ping 属性在 html5 中无法正常工作
- swagger - 如何修复操作必须在 Swagger 编辑器中具有唯一标识符语义错误
- node.js - 是否需要 GET 请求 API,因为 POST 在各方面都更好?
- r - plm:::vcovDC.plm 中的自由度是如何计算的?
- python - 在图python上找到最短路径
- c# - ParseLambda 方法抛出异常
- node.js - NestJS > TypeORM 将复杂实体映射到复杂 DTO
- java-8 - jdk 11 中缺少外部 jar 文件
- python - 在 CentOS 6 中使用 Python 2.6.6 和 scapy 2.3.3 的问题