Sobes.tech
Junior

Μπορείς να εξηγήσεις λεπτομερέστερα τις διαφορές μεταξύ null και undefined στη JavaScript;

sobes.tech AI

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

  • undefined:

    • Ανατίθεται σε μεταβλητές που έχουν δηλωθεί, αλλά δεν έχουν αρχικοποιηθεί με τιμή.
    • Είναι η προεπιλεγμένη τιμή για τις παραμέτρους συναρτήσεων στις οποίες δεν έχουν δοθεί επιχειρήματα.
    • Προκύπτει όταν προσπαθείτε να αποκτήσετε πρόσβαση σε μια ιδιότητα ή στοιχείο πίνακα που δεν υπάρχει.
    • Τύπος δεδομένων — undefined.
  • null:

    • Είναι μια ειδική τιμή που αποδίδεται ρητά σε μια μεταβλητή για να δηλώσει "απουσία τιμής".
    • Αντιπροσωπεύει την σκόπιμη απουσία οποιουδήποτε αντικειμένου ή πρωταρχικής τιμής.
    • Τύπος δεδομένων — object (αυτό είναι ένα ιστορικό σφάλμα στην JavaScript, αλλά έτσι είναι).

Οι βασικές διαφορές στον πίνακα:

Χαρακτηριστικό undefined null
Προέλευση Έμμεση (προεπιλεγμένη) Ρητή (αποδίδεται από τον προγραμματιστή)
Σκοπός Δηλωμένο, αλλά χωρίς τιμή Σκόπιμη απουσία τιμής
Τύπος δεδομένων (typeof) undefined object
Πλαίσιο boolean false false
Ισότητα (==) null == undefined (αληθές) null == undefined (αληθές)
Απόλυτη ισότητα (===) null === undefined (ψευδές) null === undefined (ψευδές)

Παράδειγμα:

let a; // Δηλωμένο, αλλά όχι αρχικοποιημένο -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Πρόσβαση σε μη υπάρχουσα ιδιότητα -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Δεν δόθηκε παράμετρος name -> undefined

let b = null; // Ρητά ορισμένο null
console.log(b); // null

let c = {};
c.data = null; // Η ιδιότητα data ορίζεται σε null
console.log(c.data); // null

console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false