Estoy tratando de establecer un valor para una variable indefinida, el tipo cambia pero el valor no. ¿Por qué está sucediendo?
let average; // is it a must to do 'average = 0;' for it work? for (const [oddName, odd] of Object.entries(game.odds)) { // console.log(typeof oddName); // is a str console.log(typeof odd); // is a num console.log(typeof average); average += odd; // console.log(typeof average); // 'average' does change to a number console.log(average); //returns NaN }Está agregando un número con un valor indefinido. al agregar indefinido con un número, hará NaN.
tal vez solo el operador de asignación (=) funcione para usted
Puede simplificar esto aún más y observar el efecto:
let a; console.log(a, " is of type ", typeof a); a += 1; console.log(a, " is of type ", typeof a); let b = 0; console.log(b, " is of type ", typeof b); b += 1; console.log(b, " is of type ", typeof b); Tenga en cuenta que a comienza como undefined porque no le dimos un valor. Cuando sumamos 0 , se convierte al tipo "number" , pero no hay respuesta a la suma "valor desconocido más uno", por lo que se le asigna el valor especial NaN .
Si lo ponemos a 0 , ya es un número; pero lo que es más importante, la suma "cero más uno" tiene una respuesta sensata, por lo que obtenemos el resultado 1 .
debe asignar promedio a 0 en la primera línea. Porque indefinido + número = NaN;