如果语句是假的 JavaScript,则再次随机化数字

randomizing number again if statement was false JavaScript

本文关键字:随机化 数字 JavaScript 语句 如果      更新时间:2023-09-26
function computerLogic(array) {
    function random() {
        var rand = Math.floor(Math.random() * 9);
        if ((array[rand] === playerChoice) || (array[rand] === computerChoice)) {
            random(); < ----------------------- THATS MY PROBLEM,
        } else if (array[rand] === 0) {
            array[rand] = computerChoice;
            grid.item(rand).innerHTML = computerChoice;
        } else {
            alert("END OF THE GAME!");
            console.log(array[rand]);
        }
    }
    random();
}

所以它是我的井字代码的一部分,将 O 或 X 放入网格。此函数在处理用户单击的函数中被调用。每次用户单击某些内容时,都会调用此函数并将更新的数组发送给它。

如果函数在 if 语句的范围内,我将递归调用函数 random() 再次随机数。

我不想递归地调用它,但我不知道如何再次使 var rand 变为随机,而不是再次调用整个 random() 函数。

只需忽略最后的 else 语句。

在这里,您可以查看所有代码是否对您来说很混乱。https://github.com/uRTLy/Tic-Tac-Toe

编辑

function computerLogic(array) {
 function random() {
var rand = Math.floor(Math.random() * 9);

var result = (array[rand] === computerChoice) || (array[rand] === playerChoice) ?
  random(): (function(rand) {
    array[rand] = computerChoice;
    grid.item(rand).innerHTML = computerChoice;
  })(rand);
}
random();

 }

也这样做,但仍然超过堆栈大小,并且仍然与之前相同。

改用while语句

while((array[rand] === playerChoice)||(array[rand] === computerChoice)) {    
    rand = Math.floor(Math.random() * 9);
}