Javascript 尝试查找随机数时提示变量无效

Javascript 尝试查找随机数时提示变量无效,javascript,Javascript,我对Javascript简介的任务是:“编写一个接受两个数字并返回两个值之间的随机数的函数。”在我尝试提示输入变量之前,这似乎很容易,此时输出似乎不正确 这是最推荐用于查找两个整数之间的随机数的代码,在本例中为1和6: function getRandomizer(bottom, top) { return function() { return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom; } } v

我对Javascript简介的任务是:“编写一个接受两个数字并返回两个值之间的随机数的函数。”在我尝试提示输入变量之前,这似乎很容易,此时输出似乎不正确

这是最推荐用于查找两个整数之间的随机数的代码,在本例中为1和6:

function getRandomizer(bottom, top) {
  return function() {
    return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
  }
}

var rolldie = getRandomizer(1, 6);

document.write(rolldie());
我得到的输出应该是1到6之间的随机整数。然而,我的任务是提示输入数字,可以是任何数字。因此,我使用10和1作为示例数字:

var max = prompt("input 10");
var min = prompt("input 1");

function getRandomizer(bottom, top) {
  return function() {
    return Math.floor( Math.random() * ( 1 + top - bottom ) ) + bottom;
  }
}

var rolldie = getRandomizer(min, max);
document.write(rolldie());

输出:961。第二次尝试:231。等等。如果我将变量max和min直接设置为10和1,代码工作正常,返回的数字介于1和10之间。但由于某些原因,提示输入,然后输入完全相同的数字,会产生完全不同的输出。为什么会发生这种情况?我如何修复它?

发生这种情况的原因是提示被视为字符串。所以你得到的是1101到1之间的数字

通过使用
parseInt
,可以确保变量
min
max
是数字:

var max = parseInt(prompt("input 10"));
请尝试以下代码:

var max = Number(prompt("input 10"));
var min = Number(prompt("input 1"));

如果您有
1+top
,您将添加一个数字和一个字符串,因此
+
运算符将连接这些值,与
+bottom
相同。将值转换为数字,例如
1+Number(顶部)
,等等
var max=Number(提示(“输入10”);var min=编号(提示(“输入1”))
如果顶部是
'10'
,底部是
'1'
,那么
1+顶部-底部
将是
109
,因为
-
操作符隐式地将字符串转换为数字。;-)你是对的,但是它再次添加了底部,所以它将是1091。我是在评论我引用的表达式的结果。最后一个“1”是在上一个结果乘以Math.random()后添加的,该值小于1,并且被加上下限,因此该函数返回的最大值将为“1081”(即
108+'1'
);-)非常感谢你!对于这样一个新手错误,我有点尴尬,因为我过去使用过parseInt。但我想我终于明白了它是什么,什么时候使用它了。