Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

182
Vistas
¿Cómo puedo ingresar un 0 o un valor vacío en el aviso y no dejar que la acción devuelta por este valor sea la misma que devuelta por el botón cancelar?

Estaba haciendo una calculadora simple con JavaScript y, después de terminarla, comencé a buscar algunas partes de mi código que podrían mejorarse. Había estado tratando de hacer que apareciera una alerta si se ingresaba el número 0 o vacío en el indicador y funcionaba, pero luego hice clic en el botón CANCELAR en el indicador y se produjo el mismo resultado. Mi pregunta es ¿cómo puedo cambiar el código a continuación para poder tener una salida para el valor 0 o vacío y otra para el botón CANCELAR?

 const operacao = Number( prompt( `Qual a sua operação hoje? 1 - Soma (+) 2 - Subtração (-) 3 - Multiplicação (*) 4 - Divisão (/) 5 - Potenciação (^) 6 - Raiz (*/) 7 - Logaritmo natural (log) 8 - Divisão inteira (resto) `, ["Digite aqui!"] ) );
 if (operacao == false) { if (confirm("Quer mesmo sair?") == true) { Window.close(); } else { calculadora(); } } else if (operacao < 1 || operacao > 8) { alert("Por favor, escolha um número que retorne uma operação!"); calculadora(); } else if (!operacao) { alert("Por Favor, digite um número válido!"); calculadora(); }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Según los documentos de aviso , "si el usuario hace clic en el botón Cancelar, esta función devuelve nulo". Lo primero que debe hacer con el resultado de prompt es convertirlo en un Number . Number(null) === 0 , por lo que cuando el usuario presiona Cancelar, todas las condiciones se evalúan contra 0 .

Sin embargo, coaccionar inmediatamente a Number es algo incorrecto, porque está perdiendo información . Una vez que lo haya hecho, no hay forma de saber la diferencia entre Cancelar y escribir 0 . En su lugar, vamos a eliminar la coerción de la siguiente manera:

 const promptResult = prompt( `Qual a sua operação hoje? 1 - Soma (+) 2 - Subtração (-) 3 - Multiplicação (*) 4 - Divisão (/) 5 - Potenciação (^) 6 - Raiz (*/) 7 - Logaritmo natural (log) 8 - Divisão inteira (resto) `, ["Digite aqui!"] );

Luego, agregaremos una verificación externa a sus condicionales:

 if (promptResult === null) { // do whatever should happen when the user presses cancel } else { const operacao = Number(promptResult); // the rest of your code goes here ...

Además, tenga en cuenta según los documentos que Number("invalid number") === NaN , por lo que donde dice else if (!operacao) , es más claro (aunque no menos correcto) si marca explícitamente NaN , es decir, else if (operacao === NaN) .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda