while循环时非法中断语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了while循环时非法中断语句相关的知识,希望对你有一定的参考价值。

很抱歉重复其他人的问题。我已经查看了这些答案,但仍在努力完成我所需要的。

我想继续尝试我的密码生成器功能,直到它给我一个带有符号,数字和大写字母的功能。

您能帮忙吗?

while (true) 
  let trialPassword = randomPassGen(10)

  trialPassword.forEach((letter)=>
    if (!upperLetters.includes(letter))
      return
     else if (!symbols.includes(letter)) 
      return
     else if (!numbers.includes(letter)) 
      return
     else 
      break
    
  )
  console.log(trialPassword)

答案

中断在forEach中不起作用。不抛出异常,您将无法停止forEach。

另一答案

如果您打算退出while循环,请使用变量作为标志,并在forEach循环中设置标志:

var keepgoing=true;
while (keepgoing) 
  let trialPassword = randomPassGen(10)

  trialPassword.forEach((letter)=>
    if (!upperLetters.includes(letter))
      return
     else if (!symbols.includes(letter)) 
      return
     else if (!numbers.includes(letter)) 
      return
     else 
      keepgoing=false;
    
  )
  console.log(trialPassword)

另外,if / else if链的编码风格也不佳,但这是另一个主题。

以上是关于while循环时非法中断语句的主要内容,如果未能解决你的问题,请参考以下文章

C while 循环仅在语句为真时运行?

do..while 循环中的继续和中断语句错误

为啥这个 switch 语句在运行时会结束 while 循环?

C语言while执行不了,代码见图?

编写自动售货程序,while 语句不会中断?

打破一个while循环并重新启动代码