Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
no puedo clearInterval en mi script, pero ¿por qué?

Estoy tratando de desarrollar un juego de turno simple en JS, y necesito hacer que esas interacciones de batalla tengan algo de retraso. Estoy usando setInverval para automatizar todo después de que el jugador presiona '¡Batalla!', pero al verificar si todavía está vivo, mi clearInterval no funciona: el proceso aún se ejecuta en segundo plano o_o

 const player = { hp: 0, state: true } const enemy = { hp: 100, state: true } function checkHp() { if(player.hp === 0 || enemy.hp === 0){ const start = setInterval(function() { console.log('Checando turnos...'), battle() }, 2000) return start } else { clearInterval(start) console.log('Você precisa descansar!') } } function battle() { turn = 0 turn = Math.floor(Math.random () * 2) console.log(turn) } checkHp()
about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Como han señalado otros, el start está fuera del alcance cuando intenta usarlo para borrar su intervalo. Analicemos lo que está haciendo su código:

 function checkHp() { if(player.hp === 0 || enemy.hp === 0){ // start is defined here in the scope of this block const start = setInterval(function() { console.log('Checando turnos...'), battle() }, 2000) // it is returned from the function here return start } else { // start has never been defined inside the else block, so it // has a value of undefined clearInterval(start) console.log('Você precisa descansar!') } }

Puede ser útil leer sobre el alcance de las variables en javascript .

Más adelante en la secuencia de comandos llama a checkHp , pero no guarda el valor de retorno, que es el identificador de intervalo si ingresó el bloque if o undefined si ingresó el bloque else, desde el cual no devuelve un valor.

Ahora, ¿qué hacer con esto? Parece que probablemente esté tratando de configurar un intervalo que se borre solo bajo ciertas condiciones. Puede consultar esta respuesta para obtener algunos consejos al respecto.

about 4 years ago · Santiago Trujillo Relatório

0

clearInterval no puede funcionar para argumentos undefined . Ponga la variable de start fuera de la condición if para que clearInterval funcione. De

 function checkHp() { if(player.hp === 0 || enemy.hp === 0){ const start = setInterval(function() { console.log('Checando turnos...'), battle() }, 2000) return start } else { clearInterval(start) console.log('Você precisa descansar!') } }

a

 function checkHp() { // this line new added const start; if(player.hp === 0 || enemy.hp === 0){ // this line will edited start = setInterval(function() { console.log('Checando turnos...'), battle() }, 2000) return start } else { clearInterval(start) console.log('Você precisa descansar!') } }

clearInterval siempre funciona ya que setInterval se asigna con variables. Entonces, la variable de start debe asignarse fuera de la condición if primero.

Las variables de Javascript pueden tener un alcance global y también pueden tener un alcance local. El alcance local no se puede tocar en el alcance global, pero la variable de alcance global se puede usar en la escala local. Estos ámbitos se pueden decidir por function , if y otros métodos que tienen corchetes ( {} ). Podemos ver un ejemplo,

 let a = 'apple' function printA() { //will console apple in this local function console.log(a) return } printA();

El ejemplo anterior de apple se puede consolar en la función,

 let a; function asignA() { a = 'banana' return } printA(); //this will console apple still in global scale //will not console banana //because asigning banana was declared in local scope console.log(a)

en este ejemplo, el banana asignado no se puede consolar fuera de la función.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda