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;
}