Estoy tratando de hacer un juego de adivinanzas simple por método de objeto. Quiero practicar el método de objeto. Todo está funcionando, excepto una condición. Quiero comparar la entrada con un número aleatorio. No sé por qué esta condición me ignora. ¿Cómo puedo arreglarlo? Gracias
let game = { quess: () => { const input = document.querySelector('.input').value return input }, randomNumber: () => { //const x = Math.floor(Math.random() * 10) + 1 const x = 3 // for testing return x }, displayQuess: function() { const userNum = document.querySelector('.quess') return userNum.innerHTML = this.quess() }, clearFields: function() { document.querySelector('.input').value = '' }, result: function() { const output = document.querySelector('.output') const input = this.quess() const random = this.randomNumber() if(random === input) { // this condition ignore me , why ? output.innerHTML = ' Winner !!' } if(input != random) { output.innerHTML = 'correct num was : ' + random } } } const btn = document.querySelector('.btn') const output = document.querySelector('.output') const quesss = document.querySelector('.quesses') let quesses = 3 btn.addEventListener('click', function() { //console.log( game.displayQuess()) game.displayQuess() game.clearFields() game.result() quesses-- quesss.innerHTML = quesses if(quesses < 1 ){ output.style.color = 'red' output.innerHTML = 'game over' document.querySelector('.input').disabled = true; document.querySelector('.btn').disabled = true; } })El === es un estricto control de igualdad de tipos. Comprueba que ambos operandos sean del mismo tipo y sean iguales. Esto no pasa la condición porque está comparando un número con una cadena. Aunque tienen el mismo valor, son de tipo de datos (un tipo numérico y un tipo de texto (cadena)).
Puede usar == para hacer verificaciones de igualdad flexibles, lo que permite verificar diferentes tipos, pero es una mejor práctica usar verificaciones de igualdad estrictas. Entonces, si espera un número, podría ser mejor convertir el tipo de cadena en un tipo de número
quess: () => { const input = document.querySelector('.input').value return parseFloat(input); },Otras lecturas: