Logic bug: 'NaN === NaN' evaluates to false by IEEE 754 standard (use Number.isNaN) – JavaScript NAN_EQUALITY_PITFALL

NAN_EQUALITY_PITFALL

Per standard IEEE 754 il valore NaN (Not-a-Number) non è mai uguale a nessun valore, neanche a se stesso ('NaN === NaN' restituisce false); verificare la presenza di NaN con l'operatore di uguaglianza è un grave bug logico, si deve usare 'Number.isNaN(x)'.

Cosa significa questo errore?

Per standard IEEE 754 il valore NaN (Not-a-Number) non è mai uguale a nessun valore, neanche a se stesso ('NaN === NaN' restituisce false); verificare la presenza di NaN con l'operatore di uguaglianza è un grave bug logico, si deve usare 'Number.isNaN(x)'.

Messaggio originale

Logic bug: 'NaN === NaN' evaluates to false by IEEE 754 standard (use Number.isNaN)

Contesto e parole chiave

Alias

  • NaN === NaN is false JavaScript Number.isNaN

Messaggi alternativi

  • confronto di uguaglianza NaN fallisce sempre usare Number.isNaN

Prodotti

  • JavaScript Engine (V8, SpiderMonkey, JavaScriptCore) / Web API

Piattaforme

  • Bun
  • Deno
  • Node.js
  • Qualsiasi Browser Web

Parole chiave

  • ecmascript
  • errore-javascript-nan-equality-comparison-pitfall
  • javascript
  • javascript.scope.nan-equality-comparison-pitfall
  • js
  • Scope, Closures e This

Cause possibili

Causa tecnica per Errore JavaScript: Confronto 'x === NaN' Restituisce Sempre False (Uso di Number.isNaN)

Per standard IEEE 754 il valore NaN (Not-a-Number) non è mai uguale a nessun valore, neanche a se stesso ('NaN === NaN' restituisce false); verificare la presenza di NaN con l'operatore di uguaglianza è un grave bug logico, si deve usare 'Number.isNaN(x)'.

molto comune

Diagnosi

Diagnostica in console browser per Errore JavaScript: Confronto 'x === NaN' Restituisce Sempre False (Uso di Number.isNaN)

Aprire la Console degli Strumenti per Sviluppatori (F12) o verificare l'output di esecuzione Node.js per analizzare lo stack trace.

Come leggere il risultato. Indica il file sorgente esatto e la riga di codice in cui si è verificata l'eccezione o il type error.

terminal
node --trace-warnings app.js

Risoluzione

Risoluzione standard per Errore JavaScript: Confronto 'x === NaN' Restituisce Sempre False (Uso di Number.isNaN)

Difficoltà: facileRischio: basso

Applicare la correzione al codice sorgente JavaScript conforme agli standard ECMAScript moderni.

  1. Ispezionare la riga evidenziata nella console degli errori
  2. Applicare optional chaining (?.) o gestione condizionale dei valori null/undefined
  3. Ricaricare la pagina o riavviare il processo per verificare la scomparsa dell'errore

Domande frequenti

Come risolvere l'errore Errore JavaScript: Confronto 'x === NaN' Restituisce Sempre False (Uso di Number.isNaN) in JavaScript?

Per standard IEEE 754 il valore NaN (Not-a-Number) non è mai uguale a nessun valore, neanche a se stesso ('NaN === NaN' restituisce false); verificare la presenza di NaN con l'operatore di uguaglianza è un grave bug logico, si deve usare 'Number.isNaN(x)'.

Approfondimenti

Schede correlate