为什么这会继续打印9

时间:2019-03-19 00:09:08

标签: javascript

function final(param1, param2, param3, param4) {
  while (param2 <= param3) {
    if (param2 % param1 === 0) {
      console.log(param2);
    } else if (param2 % param1 === param4) {
      break;
    }
    param2++;
  }
}

final(3, 5, 17, 9);

我在这里有点挣扎,基本上,如果param2param1的倍数等于param4,您应该忽略它。但这继续打印出9吗?我的代码有什么问题?我不知道这个。谢谢!

2 个答案:

答案 0 :(得分:1)

问题在于,当param4为param2 % param1时,0仍将是9

如果稍微更改代码逻辑,您可以从另一个角度看到差异:

function final(param1, param2, param3, param4) {
  for (var loop = param2; loop <= param3; loop++) {
    if (loop % param1 === 0) {
      if (loop === param4) continue;
      console.log(loop);
    }
  }
}

final(3, 5, 17, 9);

答案 1 :(得分:0)

很明显,如果param2 === param4,则应该忽略。

    function final(param1, param2, param3, param4) {
      while (param2 <= param3) { 
        if (param2 % param1 === 0 && param2 !== param4) {
           console.log(param2)
        } else if (param2 % param1 === param4) {
          break;
        }
        param2++;
      }
    }

    final(3, 5, 17, 9);