为什么我的代码未记录到控制台?

时间:2020-08-19 18:22:55

标签: javascript

我正在尝试使用对象方法来计算许多餐馆账单,但是根本没有一个账单被记录到控制台。

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))
  }
}

5 个答案:

答案 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数组。