我正在尝试使用对象方法来计算许多餐馆账单,但是根本没有一个账单被记录到控制台。
calcBills = {
bills: [42, 48, 124, 180, 268],
tips: [],
billsWithTips: [],
calcTips: function() {
for (let i = 0; i < bills.length; i++) {
if (bills[i] < 50) {
return bills[i] * 1.2
billsWithTips.push(bills[i])
console.log(billsWithTips)
} else if (bills[i] > 50 && bills[i] < 200) {
return bills[i] * 1.15
billsWithTips.push(bills[i])
console.log(billsWithTips)
} else {
return bills[i] * 1.1
billsWithTips.push(bills[i])
console.log(billsWithTips)
}
}
console.log(calcTips(bills))
}
}
答案 0 :(得分:2)
在for循环的第一次迭代中,您将在到达任何控制台日志语句之前返回。
答案 1 :(得分:1)
您在return
之前有console.log
条语句。 return
导致代码提前退出。
将console.log
移到return
语句之前。做这样的事情:
for (let i = 0; i < bills.length; i++) {
if (bills[i] < 50) {
billsWithTips.push(bills[i])
console.log(billsWithTips)
return bills[i] * 1.2
} else if (bills[i] > 50 && bills[i] < 200) {
billsWithTips.push(bills[i])
console.log(billsWithTips)
return bills[i] * 1.15
} else {
billsWithTips.push(bills[i])
console.log(billsWithTips)
return bills[i] * 1.1
}
}
答案 2 :(得分:0)
在您的对象中,您正在声明一个函数并将其分配给calcTips属性;您没有执行该功能。
要执行它并查看console.log输出: memcpy(data2, buffer, 5 * sizeof(*data2));
另外,您的calcBills.calcTips();
应该在console.log
语句之前。
答案 3 :(得分:0)
除了其他人说的话,调用calcBills.calcTips()
也会失败,因为您正在calcTips函数的上下文外部访问变量。要解决此问题,请使用指向您对象的this
。
答案 4 :(得分:0)
return
的工作方式类似于break
。当任何一个条件为true时,它首先返回该值,这意味着JavaScript跳出了循环。
您在控制台中看不到任何内容,因为所有变量都是空数组,但不是 undefined 。
只需确保将returns
放在最后。
您还可以声明一个变量,而不是返回值,而是将值分配给变量,然后将其推入billsWithTips
数组。