javascriptundefinedundefined در جاوااسکریپت
undefined در جاوااسکریپت چه معنایی دارد؟ متغیر بدون مقدار، ویژگی موجودنبودن و فرق آن با نام تعریفنشده را با کد و خروجی دقیق یاد بگیرید.
مفهوم به زبان ساده
undefined یک مقدار ساده است که در چند موقعیت معمول دیده میشود: متغیر let پس از تعریف بدون مقدار اولیه، ویژگی موجودنبودن روی یک شیء و نتیجهٔ تابعی که مقداری برنمیگرداند. دیدن آن همیشه به معنی خرابی برنامه نیست، ولی باید بدانید از کدام مسیر آمده است. برای مثال نبود شمارهٔ تماس اختیاری با گمشدن قیمت اجباری یکسان نیست.
متغیرِ دارای مقدار undefined با نامی که اصلاً تعریف نشده تفاوت دارد. خواندن مستقیم نام تعریفنشده ReferenceError ایجاد میکند. همچنین پیش از رسیدن به خط تعریف let یا const نمیتوان آن را مانند متغیر آماده خواند. اگر فقط میخواهید دقیقاً خود این مقدار را بررسی کنید، value === undefined با #strict-equality رفتار روشنی دارد.
مثال سه منبع مستقل undefined را نشان میدهد. چاپ جداگانه کمک میکند علت هر کدام مشخص بماند. در کار واقعی، اگر تابع محاسبه باید عدد بدهد اما undefined برمیگرداند، ممکن است #return را فراموش کرده باشید. برای تمرین، تابع فعلی را به برگرداندن متن «آماده» تغییر دهید و مشاهده کنید فقط خروجی مربوط به تابع تغییر میکند؛ دو مورد دیگر همچنان undefined خواهند بود.
کجا به کار میآید؟
- تشخیص مقداردهینشدن یک فیلد اختیاری
- یافتن تابعی که قرار بوده نتیجه بدهد ولی return ندارد
از تعریف تا یک مثال واقعی
let deliveryDate;
const profile = { name: "Mina" };
function doNothing() {}
console.log(deliveryDate === undefined);
console.log(profile.phone === undefined);
console.log(doNothing() === undefined);
console.log(undefined === null);
true true true false
این مثال چطور کار میکند؟
deliveryDate تعریف شده اما هنوز مقدار نگرفته است.
ویژگی phone روی profile وجود ندارد و خواندن آن undefined میدهد.
doNothing بدون return پایان مییابد؛ نتیجهاش undefined است.
اشتباه رایج
undefined را نام متغیر یا پارامتر خود نگذارید. همچنین مقایسه با undefined نامی را که اصلاً تعریف نشده قابل خواندن نمیکند.
این را به خاطر بسپارید
هنگام دیدن undefined، منشأ آن را پیدا کنید؛ نبود مقدار میتواند مجاز یا نشانهٔ نقص قرارداد باشد.