خیلیها فکر میکنن هر دو یعنی «هیچی»، ولی در JavaScript تفاوت مهمی دارن.
حالا undefined معمولاً یعنی یک مقدار هنوز تعیین نشده:
let username;
console.log(username);
// undefined
اما null معمولاً یعنی خود برنامهنویس عمداً نبودن مقدار رو مشخص کرده:
let user = null;
یعنی:
فعلاً کاربری وجود نداره.
حالا یه نکته جالب:
typeof undefined
// "undefined"
typeof null
// "object"
این رفتار null یکی از باگهای تاریخی JavaScript محسوب میشه و هنوز هم به همین شکل باقی مونده. 😅
اما قسمت مهمتر:
null == undefined
// true
null === undefined
// false
چون == تبدیل نوع انجام میده، ولی === هم نوع و هم مقدار رو بررسی میکنه.
توی پروژه واقعی چی؟
وقتی دادهای از API میگیری، ممکنه با هر دو مواجه بشی:
if (user.name === undefined) {
// فیلد name اصلاً وجود نداره
}
if (user.name === null) {
// فیلد وجود داره ولی مقدارش عمداً خالیه
}البته در پروژههای واقعی بهتره قرارداد API مشخص کنه که برای «مقدار خالی» از null استفاده میشه یا نبودن property.
🔥 خلاصه:
undefined → مقدار تعیین نشده / property ممکنه وجود نداشته باشه
null → عمداً مقدار خالی
و برای مقایسه دقیق:
===
رو انتخاب کن.
@CodeVerse_dev