Sobes.tech
Junior

Πώς να ελέγξετε αν ένας αριθμός είναι NaN;

sobes.tech AI

Απάντηση από AI

Χρησιμοποιούν τη λειτουργία isNaN(), η οποία ελέγχει αν η τιμή είναι "Μη αριθμός" (Not-a-Number).

// Παραδείγματα χρήσης του isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, επειδή το 'hello' δεν μπορεί να μετατραπεί σε αριθμό
console.log(isNaN('123'));    // false, επειδή το '123' μπορεί να μετατραπεί στον αριθμό 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, επειδή το null μετατρέπεται σε 0

// Έλεγχος μετατροπής τύπων
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

Υπάρχει επίσης η μέθοδος Number.isNaN(), η οποία ελέγχει πιο αυστηρά αν η τιμή είναι ακριβώς NaN, χωρίς προκαταρκτική μετατροπή.

// Παραδείγματα χρήσης της Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, δεν μετατρέπει
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

Η σύγκριση του NaN με τον εαυτό του ή με οποιαδήποτε άλλη τιμή επιστρέφει πάντα false, εκτός αν χρησιμοποιήσουμε το Object.is().

// Ιδιαιτερότητα της σύγκρισης με NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Σύγκριση με το Object.is()
console.log(Object.is(NaN, NaN)); // true

Ανάλογα με την εργασία, μπορεί να χρειάζεται να χρησιμοποιήσετε το isNaN() (αν η έμφαση είναι στον έλεγχο μετά τη μετατροπή σε αριθμό) ή το Number.isNaN() (για αυστηρό έλεγχο στο NaN). Η μέθοδος Number.isNaN() προτιμάται για ακριβή έλεγχο αν μια συγκεκριμένη τιμή είναι NaN.