fbpx

Undefined ба Null – ялгаатай юу вэ?

Программчлалд “утга байхгүй” гэсэн ойлголт олон янзаар илэрхийлэгддэг. JavaScript хэлэнд энэ санааг илэрхийлэх undefined болон null гэсэн түлхүүр үг байдаг. Эдгээр нь хоёулаа хоосон мэт харагдавч, үнэн хэрэгтээ үүрэг, хэрэглээний хувьд том ялгаатай. Тэдгээрийн ялгааг гүнзгий авч үзэж, бодит жишээн дээр тайлбарлан, хөгжүүлэгчид хамгийн түгээмэл гаргадаг алдаана талаар ярилцъя.

Undefined гэж юу вэ?

Undefined нь JavaScript-ийн өөрийн өгдөг анхдагч утга. Хувьсагчийг зарласан боловч ямар ч утга оноогоогүй үед автоматаар undefined оноогддог.

let x;
console.log(x); // undefined

Мөн байхгүй property-г дуудах үед:

const user = { name: “Alex” };
console.log(user.age); // undefined

Энэ тохиолдолд систем бидэнд: “Энд ямар ч утга оноогоогүй байна” гэж сануулж байгаа хэрэг.

Null гэж юу вэ?

Null бол хөгжүүлэгчийн зориуд өгдөг хоосон утга. Өөрөөр хэлбэл та тухайн хувьсагчид “одоо ямар ч утга байхгүй” гэдгийг санаатайгаар илэрхийлж байгаа хэрэг.

let y = null;
console.log(y); // null

Бодит хэрэглээний жишээ:

function findUser(id) {
const user = database.findById(id);
return user ? user : null;
}

Хэрэв хэрэглэгч олдохгүй бол null буцаах нь хамгийн зөв шийдэл. Учир нь энэ тохиолдолд “өгөгдөл байхгүй”-г зориуд харуулж байна.

ТалбарUndefinedNull
Үүсэх нөхцөлСистем автоматаар өгдөгХөгжүүлэгч зориуд оноодог
Төрөл (typeof)“undefined”“object”
УтгаОноогоогүйСанаатай хоосон

Түгээмэл алдаа ба төөрөгдөл

1. == болон === ялгахгүй хэрэглэх

let a;
let b = null;

console.log(a == b); // true
console.log(a === b); // false

2. Хоосон мөр, 0, undefined, null-ийг андуурах

if (!value) {
// value нь 0, “”, undefined, null, NaN бүгд энэ хэсэгт орно
}

Энд “false гэж тооцогдох” бүх утгууд багтаж байгаа тул жишээ нь 0 эсвэл хоосон мөр байх үед алдаа гарч болно.

3. API эсвэл өгөгдлийн сангийн хариуг буруу ойлгох

Олон API undefined буцаадаггүй, харин null буцаадаг. Жишээлбэл:

{
“id”: 1,
“email”: null
}
Энд email-д зориуд хоосон утга өгсөн байна. Энэ нь property байхгүй гэсэн үг биш, харин утга нь одоогоор тодорхойгүй гэсэн үг
 

Дүгнэлт

Undefined нь системийн өгсөн “одоогоор утга оноогоогүй” гэсэн дохио бол null нь хөгжүүлэгчийн зориуд өгсөн “хоосон” утга юм. Энгийнээр хэлбэл:

                 Undefined = санамсаргүй

                 Null = ухамсартай шийдвэр

Энэ ялгааг зөв ойлгосноор алдааг багасгаж, өгөгдлийн урсгалыг илүү тодорхой болгож, багийн түвшинд илүү ойлгомжтой код бичих боломжтой болно.

Leave a Reply