javascriptnullnull در جاوااسکریپت
null در جاوااسکریپت نبود مقدار را بهصورت صریح نشان میدهد؛ تفاوتش با صفر و undefined و بررسی انتخابنشدن کالا را با مثال و خروجی ببینید.
مفهوم به زبان ساده
null یک مقدار ساده برای نمایش نبود مقدار است؛ مثلاً در مدل یک فرم میتوانیم selectedProduct را ابتدا null بگذاریم تا بگوییم هنوز هیچ کالایی انتخاب نشده است. این معنی را قرارداد برنامه تعیین میکند. null نه رشتهٔ خالی است و نه عدد صفر؛ قیمت صفر میتواند یک قیمت واقعی باشد، در حالی که null میتواند بگوید هنوز قیمتی نداریم.
برای تشخیص دقیق از value === null استفاده کنید. خروجی typeof null برابر object است، اما این رفتار قدیمی زبان به معنی شیء قابل استفاده بودن null نیست. خواندن ویژگی از null خطا میدهد. در برابر آن، #undefined معمولاً در موقعیتهایی مانند ویژگی موجودنبودن یا برنگرداندن مقدار دیده میشود؛ این دو را بدون توجه به قرارداد یکی نگیرید.
مثال، ابتدا وضعیت انتخابنشدن را چاپ میکند و بعد یک شیء کالا را جایگزین null میکند. این تغییر نشان میدهد نبود داده و داشتن داده دو حالت جدا هستند. برای تمرین، دکمهٔ «پاککردن انتخاب» را در ذهن مدل کنید: با برگرداندن متغیر به null، رابط باید دوباره پیام انتخاب کالا را نشان دهد. استفاده از عدد صفر برای این وضعیت، ممکن است با شناسهٔ واقعی اشتباه شود.
کجا به کار میآید؟
- نشاندادن انتخابنشدن یک کالا یا رکورد در مدل فرم
- تفکیک مقدار واقعی صفر از نبود نتیجه در قرارداد داده
از تعریف تا یک مثال واقعی
let selectedProduct = null;
console.log(selectedProduct === null);
selectedProduct = { id: "p1", title: "دفتر" };
console.log(selectedProduct.title);
console.log(null === undefined);
console.log(typeof null);
true دفتر false object
این مثال چطور کار میکند؟
متغیر با null شروع میشود و بررسی دقیق آن true است.
پس از انتخاب، متغیر به شیء کالا اشاره میکند و عنوان خوانده میشود.
دو خط آخر تفاوت با undefined و رفتار تاریخی typeof را نشان میدهند.
اشتباه رایج
نوشتن selectedProduct.title وقتی متغیر null است خطا میدهد. ابتدا حالت نبود داده را مدیریت کنید؛ typeof برابر object این دسترسی را امن نمیکند.
این را به خاطر بسپارید
null را برای نبود داده با معنای روشن به کار ببرید و پیش از دسترسی به ویژگیها آن را بررسی کنید.