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