为什么我不能在函数中使用使用 prompt() 创建的变量

Why can't I use a variable created using prompt() within a function?

本文关键字:创建 变量 prompt 函数 为什么 不能      更新时间:2023-09-26

下面是一个函数,它应该在用户指定的两个数字之间产生一个随机数。如果我手动指定数字,则等式有效。但是如果我使用提示功能,它似乎会产生一个完全随机的数字。

function randOm() {
    var high = prompt("high");
    var low = prompt("low");
    return Math.floor(Math.random() * (high - low + 1)) + low;
}
document.write(randOm());
您需要

使用 parseFloat 将其转换为 Number

提示的结果转换为数字,因为它返回字符串:

return Math.floor(Math.random() * ((+high) - (+low) + 1)) + (+low);
已知

prompt返回string,因此您必须在执行操作之前convert string to integer。另一个缺点是,如果用户在提示框中输入任何字符,如"hello"或"hi",你的函数可能会返回NaN,因为无法将字符解析为数字。

脚本:

function randOm() {
    var high = prompt("high");
    var low = prompt("low");
    var h=parseInt(high);
    var l=parseInt(low);
    return Math.floor(Math.random() * (h - l + 1)) + l;
}
document.write(randOm());

if (Number.isNaN(high) || Number.isNaN(low)){
    alert ("both entries must be numbers!");
}
else{
    low = parseFloat(low);
    high = parseFloat(high);
    return Math.floor(Math.random() * (high - low + 1)) + low;
}