现在正在学习JavaScript几周,我正在尝试编写一个功能,提示用户输入2个数字并在它们之间生成一个随机数。我写了这段代码,
function randomInt(min,max) {
var min = prompt( "Enter a number." );
var max = prompt( "Enter another number." );
var randNum = Math.floor(Math.random() * (max - min + 1)) + min;
return randNum;
}
alert(randomInt());
它会提示我输入数字,但它会生成一个随机数,而不是我输入的数字之间的数字。就像我输入5和20并返回31或2但是在尝试时,
var min = 5;
var max = 20;
它有效,实际上给了我一个5到20之间的数字,不知道为什么。这似乎是一项简单的任务,但只是难倒。
答案 0 :(得分:1)
prompt()
函数返回字符串,而非数字。您可以使用一元+
运算符强制将值解释为数字:
var min = +prompt("Enter a number.");
var max = +prompt( "Enter another number." );
如果没有这个,外部+
运算符将优先执行字符串连接操作,因为右侧操作数(min
)是一个字符串。也就是说,在这个表达式中:
Math.floor(Math.random() * (max - min + 1)) + min
-
中的max - min
运算符会导致数字减法正确完成。但是,如果+
是字符串,则将最小值添加回随机数的外部min
将执行字符串连接,而不是数字添加。因此,您最终会得到一个介于0和隐含范围之间的随机整数,并连接到最小值(作为字符串)。