为什么我的Switch语句中的Return语句无法按预期工作?

时间:2018-11-01 19:05:32

标签: javascript

const customer = [10, 10]; // input array

const lemonadeChange = function (bills) {  

let five = 0, ten = 0;

bills.forEach((ele, idx) => {

switch (ele) {
  case 5:
    five += 1;
    break;

  case 10:
    if (five === 0) {
      return false; //at this point the function should stop. Instead it proceeds. 
    }
    else {
      five -= 1;
      ten += 1;
    }

  case 20:
    if (five !== 0 && ten !== 0) {
      five -= 1, ten -= 1;
    }
    else if (five > 2) {
      five -= 3;
    }
    else {
      return false;
    }


}

})

return true; //the function should be returning false because the variable five has a value of 0;
}

输入:大小为2的整数数组。 结果:是 预期结果:错误。

在Switch为10的情况下,函数lemonadeChange应该返回false并停止执行。取而代之的是,该函数继续在数组中循环,并在循环外返回true。我使用调试器运行代码,但仍然无法弄清为什么案例10的return语句不起作用。谢谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

forEach()将对bills中的每个元素执行封闭的函数。 return语句结束函数调用,这仅使forEach()移至下一个元素。

如果您不想遍历每个元素,则需要使用for循环而不是forEach()