Sobes.tech
Junior

Vai vari sīkāk izskaidrot atšķirības starp null un undefined JavaScript?

sobes.tech AI

Atbilde no AI

  • undefined:

    • Tiek mainīgajiem, kas ir deklarēti, bet tiem nav piešķirta vērtība.
    • Tā ir noklusējuma vērtība funkciju parametriem, kuriem nav nodoti argumenti.
    • Tiek iegūta, mēģinot piekļūt neeksistējošai objekta īpašībai vai masīva elementam.
    • Datu tips — undefined.
  • null:

    • Ir īpaša vērtība, kas tieši piešķirta mainīgajam, lai norādītu "vērtības trūkumu".
    • Apzīmē apzinātu jebkura objekta vai primitivās vērtības trūkumu.
    • Datu tips — object (tas ir vēsturiska JavaScript kļūda, bet tā ir).

Galvenās atšķirības tabulā:

Raksturlielums undefined null
Rašanās Ne tieši (noklusējuma) Tieši (izstrādātājs piešķir)
Mērķis Deklarēts, bet nenodots vērtība Apzināta vērtības trūkums
Datu tips (typeof) undefined object
Boolean konteksts false false
Vienādojums (==) null == undefined (patiesība) null == undefined (patiesība)
Vienādojums (===) null === undefined (nepatiesība) null === undefined (nepatiesība)

Piemērs:

let a; // Deklarēts, bet nenodots -> undefined
console.log(a); // undefined

const obj = {};
console.log(obj.prop); // Pieeja neeksistējošai īpašībai -> undefined

function greet(name) {
  console.log(name);
}
greet(); // Parametrs nav nodots -> undefined

let b = null; // Skaidri piešķirts null
console.log(b); // null

let c = {};
c.data = null; // Īpašībai piešķirts 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