سلام به همگی دوستان
جاوا اسکریپت کلا زبان باحالیه با مباحث خیلی زیاد که میشه در موردشون کلی صحبت کرد.
تصمیم گرفتم در مورد سه تا دیتاتایپ تقریبا شبیه اما متفاوت null، empty و undefined یکم بنویسم.
اول در مورد هر کدوم تعریفی داشته باشیم.
در جاوا اسکریپت اگر متغیری داشته باشیم که مقدار نداشته باشه هم مقدار هم نوع رو undefined
به ما نشون میده کلمه undefined به معنی (تعریف نشده) هستش.
داخل مثال اول ما متغیری به اسم book داریم که هیچ مقداری نداره و واسه ما undefined رو نمایش میده.
همونطور که در مثال دوم میبینید
ما میتونیم undefined رو به یه متغیر اختصاص بدیم و نتیجه همون چیزی هست که در مثال اول دیدیم.
کلمه empty به معنی (خالی) هست اما هیچ ربطی به undefined نداره و کاملا متفاوت هستند.
مثالی از empty رو میتونیم رشته ای بدونیم که چیزی رو داخلش ننوشتیم و خالی هست.
در تصویر بالا متغیری رو داریم که مقدارش یه رشته (string) خالی هست
در واقع به اون رشته خالی empty گفته میشه
اما نکته ای که هست اینه که برعکس undefined ها که مقدارشون رو undefined نمایش میدادن empty ها چیزی رو به ما نمایش نمیدن.
و نکته دوم نوع empty ها رشته یا همون (string) هست که جلوتر این موضوع رو بررسی میکنیم.
در برنامه نویسی Null به معنی (پوچ و تهی هست) در واقع چیزی وجود نداره.
ما میتونیم Null رو به یک متغیر اختصاص بدیم.
در مثال بالا مقدار Null به متغیر book اختصاص داده شده به این معنی که چیزی داخلش نیست و تهی هست.
از لحاظ نوع که بخوایم بررسیشون کنیم یکم باید منتظر چیزای عجیب باشیم.
در جاوااسکریپت متدی هست به نام typeof که نوع متغیری که تعریف کردیم رو به ما اعلام میکنه
بریم و ببینیم که typeof چه نوعی رو به ما نمایش میده.
قبل تر گفتیم که نوع undefined همون undefined میشه
و اینم گفتیم که empty همون رشته هست که چیزی داخلش ننوشتیم یعنی string
اما میرسیم به همون چیز عجیبی که گفتم یعنی نوع Null که object هست ?
حالا بنا به هر دلایلی Null یک شیء (object) هست و ما خیلی کاری به این قضیه نداریم
این مباحث تئوری هستش و ما صرفا نوع و اینکه در عمل چیکار میکنن رو میخوایم بدونیم.
اما با تعریفات بالا میشه اینطور جمع بندی کرد که undefined و Null
در نوع کاملا متفاوت هستن ولی در مقدار مساوی
در واقع هردو چیزی برای نمایش دادن به ما ندارن
تصویر بالا شاید به درک این موضوع کمک کنه
به مثال بالا هم اگر نگاهی بندازیم خالی از لطف نیست
ابتدا نوع رو بهمون نمایش داده بعد با عملگر های (==) و (===) اون هارو مقایسه کرده
از لحاظ نوع که برابر نیستن و گفتیم که متفاوتن.
دومی از لحاظ مقدار که برابرن.
توضیح : (==) مقایسه مقدار رو انجام میده که به ما true نمایش داده
(===) مقایسه رو از لحاظ نوع و مقدار انجام میده و چون نوع متفاوته به ما false نمایش داده شده.
به آخر رسیدیم
ممنون از وقتی که گذاشتین و امیدوارم بهتون کمک کرده باشه.