繁体   English   中英

如何使我的条件在此 JavaScript 代码段中工作?

[英]How can I make my conditionals working in this JavaScript piece of code?

我正在编写一些 JavaScript 代码作为我创建密码生成器应用程序的作业的一部分,我决定将我应该向用户询问的所有问题都放在 function 中。 生成密码的标准之一是选择 8 到 128 之间的字符数。我想确保用户输入正确的数字,否则 function 重新启动并且不会让用户看到确认框的 rest直到他输入所需的数字,所以我这样写:

function askQuestions() {
  let numOfChracaters = +prompt("Choose the number of characters for your password (between 8 and 128)");
  console.log(numOfChracaters);
  if (numOfChracaters >= 8 || numOfChracaters <= 128) {
    let hasUppercase = confirm("Do you want your password to include uppercase letters?");
    let hasLowercase = confirm("Do you want your password to include lowercase letters?");
    let hasNumber = confirm("Do you want your password to include numbers?");
    let hasSpecialCharacters = confirm("Do you want your password to include special characters?");

    let prefrencesArray = [numOfChracaters, hasUppercase, hasLowercase, hasNumber, hasSpecialCharacters];
    return prefrencesArray;
  } else {
    askQuestions();
  }
} 

但由于某种原因,它不起作用,仍然允许用户输入他们想要的任何数字。 任何想法我在这里做错了什么?

替换条件
numOfChracaters >= 8 || numOfChracaters <= 128

numOfChracaters >= 8 && numOfChracaters <= 128

你犯了一个有趣的错误。 每个数字要么 >= 8要么<= 128。

您正在寻找的是&&运算符,因为双方都需要同时为真。

您可以使用无限循环运行直到满足要求

let numOfChracaters = 0;
while(numOfChracaters < 8) {
  numOfChracaters = +prompt("Choose the number of characters for your password (between 8 and 128)");
}

if (numOfChracaters >= 8 && numOfChracaters <= 128)

因为对于您的 OR ( || ) 运算符,条件 numOfChracaters <= 128 为 true,因此根据您的输入(false || true)=> returns true. and (false && true)=> return false (false || true)=> returns true. and (false && true)=> return false

解释你的错误,以便下次你不会犯这样的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM