Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Explorar Funciones y Listas - Genera un numero aleatorio - error en consola

Ayuda, veo mi código igual al de el instructor, sin embargo, cuando chequeo la consola me muestra el error que estoy declarando 2 veces la variable (pero el juego funciona bien)

Error de consola: [Uncaught SyntaxError: Identifier 'numeroSecreto' has already been declared (at app.js:1:1)]

Mi código:
[let numeroSecreto = generarNumeroSecreto();
let intentos = 1;
console.log(numeroSecreto);
function asignarTextoElemento(elemento, texto) {
let elementoHTML = document.querySelector(elemento);
elementoHTML.innerHTML = texto;
return;
}
function verificarIntento() {
let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value);
//console.log(typeof(numeroSecreto));
//console.log(numeroDeUsuario);
//console.log(typeof(numeroDeUsuario))
//console.log(numeroDeUsuario === numeroSecreto);
//console.log (intentos);
if (numeroDeUsuario === numeroSecreto) {
asignarTextoElemento('p', Acertaste el número en ${intentos} ${(intentos === 1) ?'vez' : 'veces' });
} else {
if (numeroDeUsuario > numeroSecreto) {
asignarTextoElemento('p', 'El número secreto es menor');
} else {
asignarTextoElemento('p', 'El número secreto es mayor');
}
intentos++;
}
return;
}
function generarNumeroSecreto() {
return Math.floor(Math.random()*10)+1;
}
asignarTextoElemento('h1', 'Juego del número secreto!');
asignarTextoElemento('p', 'Indica un número del 1 al 10');
]

1 respuesta

Hola Estudiante, espero que estés bien!

Parece que estás teniendo un problema con la declaración de la variable numeroSecreto. El error que estás viendo en la consola indica que numeroSecreto está siendo declarado más de una vez. Esto suele ocurrir si el archivo app.js se carga más de una vez o si hay múltiples declaraciones de la misma variable en el mismo ámbito.

Aquí hay algunas cosas que puedes verificar y probar:

  1. Archivo Duplicado: Asegúrate de que el archivo app.js no esté siendo incluido más de una vez en tu documento HTML. Revisa la sección <script> de tu HTML para asegurarte de que app.js no se carga dos veces.

  2. Declaración de Variables: Revisa si numeroSecreto está siendo declarado en otro lugar del código que no has mostrado. En tu caso, parece que solo está declarado una vez, lo cual es correcto.

  3. Alcance de la Variable: Si app.js se carga más de una vez, intenta usar let solo en el lugar donde necesitas que numeroSecreto sea una nueva declaración. Si necesitas que numeroSecreto sea accesible en un ámbito más amplio, podrías considerar usar var o definir la variable fuera de las funciones y luego asignarle un valor.

Aquí tienes un ejemplo de cómo podrías estructurar tu código para evitar este problema:

// Asegúrate de que este script no se carga más de una vez en tu HTML
let numeroSecreto;
let intentos = 1;

function inicializarJuego() {
    numeroSecreto = generarNumeroSecreto();
    console.log(numeroSecreto);
    asignarTextoElemento('h1', 'Juego del número secreto!');
    asignarTextoElemento('p', 'Indica un número del 1 al 10');
}

function asignarTextoElemento(elemento, texto) {
    let elementoHTML = document.querySelector(elemento);
    elementoHTML.innerHTML = texto;
    return;
}

function verificarIntento() {
    let numeroDeUsuario = parseInt(document.getElementById('valorUsuario').value);
    if (numeroDeUsuario === numeroSecreto) {
        asignarTextoElemento('p', `Acertaste el número en ${intentos} ${(intentos === 1) ? 'vez' : 'veces'}`);
    } else {
        if (numeroDeUsuario > numeroSecreto) {
            asignarTextoElemento('p', 'El número secreto es menor');
        } else {
            asignarTextoElemento('p', 'El número secreto es mayor');
        }
        intentos++;
    }
    return;
}

function generarNumeroSecreto() {
    return Math.floor(Math.random() * 10) + 1;
}

// Inicializa el juego al cargar el script
inicializarJuego();

Espero que esto te ayude a resolver el problema. ¡Bons estudios!