Javascript 为什么可以';我是否在函数中使用使用prompt()创建的变量?

Javascript 为什么可以';我是否在函数中使用使用prompt()创建的变量?,javascript,Javascript,下面是一个函数,它应该在用户指定的两个数字之间生成一个随机数。如果我手动指定这些数字,则该公式有效。但是如果我使用提示函数,它似乎会产生一个完全随机的数字 function randOm() { var high = prompt("high"); var low = prompt("low"); return Math.floor(Math.random() * (high - low + 1)) + low; } document.write(randOm());

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

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

document.write(randOm());

您需要使用
parseFloat
将其转换为
数字

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

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

提示符
已知会返回
字符串
,因此在执行操作之前必须将
字符串转换为整数。另一个缺点是,如果用户在提示符框中输入任何字符,如“hello”或“hi”,则函数可能会返回
NaN
,因为无法将字符解析为数字

脚本:

函数随机(){
var高=提示(“高”);
var低=提示(“低”);
var h=parseInt(高);
var l=parseInt(低);
返回Math.floor(Math.random()*(h-l+1))+l;
}
document.write(randOm())
prompt()返回一个字符串,因此在数学运算中使用它之前必须对其进行转换如果使用console.log()显示提示符收集的内容,则它看起来是一个整数。为什么会这样?还有,为什么等式没有出错并说NaN?如果使用console.log()来显示提示符收集到的内容,那么它似乎是一个整数。为什么会这样?也为什么方程不出错,说NaN?
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;
}