Me pregunto este código, tratando de entender el valor de nan o Nan ya que no es falso ni verdadero y es solo un objeto Número del tipo de número, la pregunta es aquí ¿por qué esto devuelve cero ya que Nan no es falso?
mi valor esperado aquí es Nan
tip = '.' total = 10 let totalPlusTip = ((total * (tip/100)) + total) || 0 console.log(totalPlusTip) //0mi valor esperado aquí es 110
tip = 10 total = 100 let totalPlusTip = ((total * (tip/100)) + total) || 0 console.log(totalPlusTip) //110dado que Nan no es falsa, ¿por qué Nan no regresa cuando lo hacemos?
La razón por la que el primer código da como resultado 0 es porque NaN es falso y está en || operador, el operador OR lógico || devuelve el valor de su segundo operando, si el primero es falso.
Puede ver a continuación, el valor de ((total * (tip/100)) + total) es NaN y !NaN devuelve verdadero, lo que significa que devuelve falso. Dado que NaN es falso, || devuelve el segundo valor que es 0.
let tip = '.' let total = 10 let totalPlusTip = ((total * (tip/100)) + total) || 0 console.log(total * (tip/100)) console.log(!NaN) console.log(totalPlusTip) //0Desafortunadamente, es falso.
Sin embargo, puede usar el operador coalescente nulo (??) si no le importa IE.
let totalPlusTip = ((total * (tip/100)) + total) ?? 0Solo nulo o indefinido será 0.