script.js:65 Неучтенный диапазон Ошибка: Превышен максимальный размер стека вызовов

#javascript

Вопрос:

Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий, я несколько раз тестировал код, но я не могу решить эту проблему. Вот весь сценарий, я несколько раз тестировал код, но я не могу решить эту проблему. Вот весь сценарий

 // Constantes  const container = document.querySelector('.plateau');  const scoreBoard = document.querySelector('.score');  const btnStart = document.querySelector('.btnStart');   // Variables  let derniereCachette = false;  let gameOver = false;  let score = 0;  btnStart.addEventListener('click',startGame);  function startGame(){  btnStart.getElementsByClassName.display = 'none';  creationPlateau();  startZombies();  score = 0;  scoreBoard.innerHTML = score;  scoring();   }  //Fonction pour faire apparaitre les zombies aléatoirement  function startZombies(){   let cachette = randomUp();   let temp = Math.floor(Math.random() *3)   1;   let tempClass = temp gt; 1 ? 'up' : 'up2';   cachette.classList.add(tempClass);   //calcul du tps d'apparition:  const time = Math.round(Math.random()* (1500 - 250)  250);   setTimeout(function(){   cachette.classList.remove(tempClass);   if(!gameOver) startZombies();    },time);  }   function randomUp(){   //On crée une variable pour aller chercher ttes les div qui ont la class = "cachette"   const cachettes = document.querySelectorAll('.cachette');   //constante qui va générer un chiffre aléatoire parmi les 9 occurences   const idx = Math.floor(Math.random() * cachettes.length);   if(cachettes[idx].zombieId === derniereCachette){  console.log;   //on relance la génération de l'index   return randomUp();  }   //ON STOCKE le résultat dans la variable derniereCachette   derniereCachette = cachettes[idx].zombieId;   //ON RETOURNE à la valeur obtenue   return cachettes[idx]; }     function creationPlateau(){  let cachetteCrees = 9;   container.innerHTML = ' ';   //Création d'une boucle pour la création des div qui représentent les cachettes (pas plus de 9)    for(let x = 0; xlt; cachetteCrees; x  ){   //console.log('apparitions');   //Créer les div   let div = document.createElement('div');   //On ajoute une classe à chaque div nouvellement crées   div.setAttribute('class', 'cachette');   div.zombieID = x;   //On crée dynamiquement uen div avec une classe et un évenement (tie) pour les zombies, Lola.   //Zombies   let zombie = document.createElement('div');  zombie.setAttribute('class','zombie');  zombie.onclick = tir;  div.appendChild(zombie);   //Lola   let lola = document.createElement('div');  lola.setAttribute('class','lola');  lola.onclick = tir2;  div.appendChild(lola);   // Mur   let mur = document.createElement('div');  mur.setAttribute('class','mur');  div.appendChild(mur);   //On rattache nos div (9) à la div plateau   container.appendChild(div);       } }  function scoring(){  scoreBoard.innerHTML ="Score: "   score;   let message = score gt;=10 ? "C'est gagné !" : "Vous avez perdu, voulez vous refaire une partie ?";   if(score gt;= 10 || score lt;0){  gameOver = true;  btnStart.getElementsByClassName.display = 'block';   confirm(message);  document.location.href = "index.html";  } }  function tir(e){    score  ; this.parentNode.classList.remove('up'); scoring();  }   function tir2(){    score = score-5; this.parentNode.classList.remove('up2'); scoring();  }  

Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий

Ответ №1:

У каждой рекурсии должен быть базовый случай, то есть, в какой момент она остановится.

Из вышесказанного следует, что он будет продолжать работать и, вероятно, не остановится, так как у браузера полностью закончится память, следовательно, появится сообщение об ошибке.

Предоставьте полную информацию о своем коде там, а не ниже

Комментарии:

1. спасибо за вашу помощь, вы найдете полный сценарий