Javascript 如何使函数自身重复[x]多次?

Javascript 如何使函数自身重复[x]多次?,javascript,Javascript,我正在做掷骰子的程序 到目前为止,一切都很顺利,直到我做到这一点 迄今为止的代码: function randomNum(max) { return Math.floor(Math.random() * (max - 1 + 1)) + 1; } var names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', '

我正在做掷骰子的程序

到目前为止,一切都很顺利,直到我做到这一点

迄今为止的代码:

function randomNum(max) {
    return Math.floor(Math.random() * (max - 1 + 1)) + 1;
}

var names = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen', 'twenty'];

function rollDice(number, sides) {
    return("Rolled "+ names[number] +" "+ names[sides] +" sided dice");
}

function randomDice(number, sides) {
    function repeat(number) {
        randomNum(sides);
        if(sides > 20) sides==20;
}}
问题在于:

function randomDice(number, sides) {
    function repeat(number) {
        randomNum(sides);
        if(sides > 20) sides==20;
}}
我想说的是

randomDice(2, 20)
它应该掷2个二十面骰子,但是如果我想掷多次,我不能让我的randomNum函数重复它自己两次


编辑:问题已经解决,谢谢大家的帮助:)

您想要
setInterval
方法:

尝试for循环

for (i=0; i<2; i++){
   repeat(20);
}
//move this function out of the randomDice function
function repeat(number) {
    randomNum(sides);
    if(sides > 20) sides==20;
}
对于(i=0;i=20)边==20;
}

只需将
函数repeat(number)
声明更改为for循环:
for(var n=0;n
。这将获得您想要的重复:

函数随机数(最大值){
返回Math.floor(Math.random()*max)+1;//没有理由执行max+1-1
}
变量名称=[“零”、“一”、“二”、“三”、“四”、“五”、“六”、“七”、“八”、“九”、“十”、“十一”、“十二”、“十三”、“十四”、“十五”、“十六”、“十七”、“十八”、“十九”、“二十”];
功能滚动骰子(数量、侧面){
返回“滚动”+名称[数字]+“”+名称[侧面]+“侧面骰子”;
}
函数随机骰子(数字、边){
var results=[]//创建数组以存储结果
if(sides>20)//限制sides,但只需执行一次(外部循环)
边==20;
对于(变量n=0;nconsole.log(randomDice(2,20).join(',');//将选择的值显示为逗号分隔的值
为什么不直接循环并收集滚动结果?您甚至没有调用repeat函数:)您可以按照大家的建议执行循环,或者只是为了好玩而玩递归。只需将
函数repeat(number)
声明更改为for循环:
for(变量n=0;n
o-o-o-o-o-o-o-o-overkill你的回答应该更明确一些,我不认为这是他的意思。仅仅滚动一个骰子n次似乎有点笨拙,不是吗?
setInterval
会随着时间的推移重复一个函数,而OP希望立即这样做。将interval设置为
0
或其他较低的数字会导致所有重复调用在更难使用的事件循环上。IMO在一个错误命名的
repeat
函数中复制
randomNum
没有任何意义。钳制最大边数使其有点合理,但
repeat
不会…repeat,因此至少应该称为其他名称。