我无法让第一个函数(如下)正常工作。我希望它询问用户的年龄,并有两种可能的结果。如果用户输入正确的值(即正数),它应该返回年龄。另一方面,如果用户输入不正确的值(字符串、空、未定义、负数),则应显示一条警报消息,并让用户重复该过程,直到输入并返回正确的值。
function age_of_user() {
let age_entered = prompt("Enter Your Age:");
while (typeof age_entered !== "number" || age_entered < 0) {
alert("You entered an incorrect value. Please enter correct age.");
age_entered = prompt("Enter Your Age:");
}
return age_entered;
}
function confirm_age() {
let age = age_of_user();
if (age < 18) {
alert("Sorry! You need to be an adult to view content.");
}
else {
alert("Welcome to our site.");
}
}
confirm_age();
最佳答案
正如评论中提到的,prompt()
函数始终将输入捕获为字符串,即使输入是有效数字也是如此。要检查它是否是数字,您可以尝试使用 parseInt(age_entered)
解析返回的字符串(如果您想允许非整数年龄,则可以使用 parseFloat
,尽管这样' d 对我来说似乎很奇怪),如果你返回一个数字,则输入是好的 - 如果你返回 NaN
,则它无效。
这是根据这种理解更新的脚本:
function age_of_user() {
let age_entered = parseInt(prompt("Enter Your Age:"));
while (Number.isNaN(age_entered) || age_entered <= 0) {
alert("You entered an incorrect value. Please enter correct age.");
age_entered = parseInt(prompt("Enter Your Age:"));
}
return age_entered;
}
function confirm_age() {
let age = age_of_user();
if (age < 18) {
alert("Sorry! You need to be an adult to view content.");
}
else {
alert("Welcome to our site.");
}
}
confirm_age();
关于javascript - 当 x 来自提示函数时,为什么 typeof x 永远不会是 'number'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57991054/