Sobes.tech
Junior

Poți explica mai detaliat diferențele dintre null și undefined în JavaScript?

sobes.tech AI

Răspuns de la AI

  • undefined:

    • Se atribuie variabilelor declarate, dar neinițializate cu o valoare.
    • Valoarea implicită pentru parametrii funcțiilor cărora nu li s-au transmis argumente.
    • Se obține atunci când se încearcă accesarea unei proprietăți sau a unui element de matrice care nu există.
    • Tip de date — undefined.
  • null:

    • Este o valoare specială atribuită explicit unei variabile pentru a indica "absența valorii".
    • Reprezintă absența intenționată a oricărui obiect sau valoare primitivă.
    • Tip de date — object (acesta este o eroare istorică în JavaScript, dar așa este).

Principalele diferențe din tabel:

Caracteristică undefined null
Origine Implicit (implicit) Explicit (atribuit de dezvoltator)
Scop Declarat, dar fără valoare atribuită Absența intenționată a valorii
Tip de date (typeof) undefined object
Context boolean false false
Egalitate (==) null == undefined (adevărat) null == undefined (adevărat)
Egalitate strictă (===) null === undefined (fals) null === undefined (fals)

Exemplu:

let a; // Declarat, dar neinițializat -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Acces la o proprietate inexistentă -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parametrul name nu a fost transmis -> undefined

let b = null; // A fost atribuit explicit null
console.log(b); // null

let c = {};
c.data = null; // Proprietății data i s-a atribuit 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); // fals