JavaScript дэх null ба undefined хоорондох ялгаа
Лавлагаа
JavaScriptЕрдийн хэрэглээ null
Функцийн параметрийн хувьд функцийн параметр нь объект биш гэсэн үг юм
function myFn(obj) {
if(null == obj) {
// code
}
}
Объектын анхны загвар гинжин хэлхээний төгсгөлд
Object.getPrototypeOf(Object.prototype);
Хувьсагчийг гаргахдаа хувьсагч руу null оноож өгнө
let o={
code:'abc'
};
o = null;
Тодорхойгүй хэрэглээний ердийн хэрэглээ
Хувьсагчийг зарласан боловч оноогүй, хувьсагчийн утга тодорхойлогдоогүй байна
let o;
console.log(o); //undefined
Дуудлага хийх үед функцын өгөх ёстой параметрийг өгөхгүй бөгөөд өгөгдөөгүй параметрийн утгыг тодорхойлоогүй болно.
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Объект агуулаагүй шинж чанарууд, утга нь тодорхойгүй байна
let o={
code:'abc'
};
console.log(o.name); //undefined
Функц нь утгыг буцаадаггүй тохиолдолд анхдагчаар тодорхойлогдоогүй буцаана
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
Null ба undefined-ийн ижил төстэй байдал
Boolean руу хөрвүүлбэл худлаа
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
Null ба undefined хоорондын ялгаа
Тоо руу хөрвүүлбэл үр дүн нь өөр байна. Хөрвөх үр дүн нь 0-ийн хүчинтэй тооны утга болох бөгөөд тодорхой бус хөрвүүлэлтийн үр дүн нь NaN байна.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Хоёр төрөл нь ялгаатай, null-ийн төрөл нь объект, undefined хэлбэр нь тодорхойгүй байна.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
null ба undefined-ийг харьцуулах
Хоосон ба тодорхойгүй гэж ялгахын тулд зөвхөн нийцэмжийг ашиглаж болно.Тохирохдоо хоёр төрөл тэнцүү байгаа эсэхийг хатуу харьцуулна.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
дүгнэх
Дээрх харьцуулалтыг хийсний дараа бид эдгээр хоёр төрлийг тодорхой ойлголттой болсон. Ихэнхдээ кодыг бичихдээ хувьсагч хүчин төгөлдөр утгатай эсэхийг шүүхдээ бид энэ хоёрыг ялгах шаардлагагүй бөгөөд зөвхөн үүнийг Boolean төрөл болгон ашиглаарай. Гэхдээ үл хөдлөх хөрөнгө байгаа эсэхийг шүүх шаардлагатай бол бид тодорхойгүй байдлаар шүүх төрлийг хатуу ашиглах ёстой. Эцэст нь, хэрэв бид тоон утгыг дамжуулбал бид эхлээд дүгнэлт хийх ёстой бөгөөд шууд тоон хэлбэрт шилжүүлж болохгүй, тэгэхгүй тохиолдолд бид хэвийн бус үр дүнд хүрэх бөгөөд тодорхойгүй бол хүчин төгөлдөр бус NaN-ийг шууд тооцоолох болно.