函数返回未定义的值,有点困惑

Roj*_*nze 3 javascript arrays function

我正在尝试解决我当前正在做的一门课程的问题,但是我一直坚持为什么现在大约一个小时后我的代码返回未定义状态。

我已经改变了几件事,添加了括号以确保一切井井有条,还请尝试一下其他方法。

var bills = [124, 48, 268];

function tipsCalculator(bill) {
  switch (bill) {
    case bill < 50:
      return (bill * (20 / 100));

    case bill >= 50 && bill <= 200:
      return (bill * (15 / 100));

    case bill > 200:
      return (bill * (10 / 100));
  }
}

var testing = tipsCalculator(bills[0]);
console.log(testing);
Run Code Online (Sandbox Code Playgroud)

我希望它返回124 * whichever值适合的情况的计算。

Her*_*tar 6

这不是的有效用法switch。您将必须使用以下if语句:

var bills = [124, 48, 268];

function tipsCalculator(bill) {
  if (bill < 50)
    return (bill * (20 / 100));

  if (bill >= 50 && bill <= 200)
    return (bill * (15 / 100));

  if (bill > 200)
    return (bill * (10 / 100));
}

var testing = tipsCalculator(bills[0]);
console.log(testing);
Run Code Online (Sandbox Code Playgroud)

之所以不起作用是因为像这样的表达式的bill < 50值都是布尔值- truefalse。因此,当您的代码执行时tipsCalculator(bills[0]),函数如下所示:

function tipsCalculator(124) { // bills[0] == 124
  switch (124) {
    case false: // 124 > 50 == false
      return (124 * (20 / 100));

    case true: // 124 >= 50 == true, 124 <= 200 == true, thus true && true == true
      return (124 * (15 / 100));

    case false: // 124 > 200 == false
      return (124 * (10 / 100));
  }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,唯一的情况是trueand false,但124都不是,因此您的函数无需输入任何情况即可完成,并且由于未执行任何return语句,因此返回值为undefined