我刚刚开始学习如何在JS中编码,我想做一个程序,迎接用户后,他填写所需的信息年龄和姓名。
我添加了一个循环,检查在提示符中输入的数据是否是数字,但它似乎无限地继续下去,就像值总是错误的,循环一遍又一遍地循环自己,即使值是正确的(当然是在我第一次输入错误的值之后)。
最棒的是,当我显示typeof
值时,它同时显示了正确和错误。
alert("Hi this site is only accsesable by pepole above an age of 18")
let usersAge = prompt("How old are you?");
usersAge = Number(usersAge);
while (Number.isNaN(usersAge)) {
let usersAge = prompt("type in the correct value?");
}
if (usersAge >= 18) {
let userName = prompt("cool,what is ur name")
toString(usersAge)
console.log("wassup" + " " + userName + " " + "with age of" + " " + usersAge)
} else {
console.log("sorry ur age is to low for us to display this website")
};
console.log(typeof usersAge)
console.log(usersAge)
控制台输出:
对不起,您年龄太小,无法显示此网站
“数字”
钠氮
2条答案
按热度按时间but5z9lq1#
第一个问题是因为您在
while
块中重新定义了usersAge
,这会影响循环的结果,请删除那里的let
关键字。另一个问题是,在某些情况下,你比较的是字符串和整数。在比较之前,把所有的值都转换成相同的类型。
解决了这些问题后,您的代码就可以工作了:
***然而***把一个
prompt()
放在一个潜在的无限循环中是一个*非常糟糕的设计选择。这种选择会激怒你的用户,并把你的网站列入黑名单。一个更好的方法是验证输入,如果无效,那么你应该给予用户选择退出循环并离开你的网站。现在你强迫用户在离开之前输入一个年龄。
bgibtngc2#
嗨,我的朋友,为了解决你的问题,你不需要使用
let
,因为你只使用了一次。我会给予你正确的语法来解决你的问题:希望你的问题解决了。