محمد یوسفوند
محمد یوسفوند
خواندن ۲ دقیقه·۳ سال پیش

تفاوت null، empty و undefined در جاوااسکریپت

سلام به همگی دوستان

جاوا اسکریپت کلا زبان باحالیه با مباحث خیلی زیاد که میشه در موردشون کلی صحبت کرد.

تصمیم گرفتم در مورد سه تا دیتاتایپ تقریبا شبیه اما متفاوت null، empty و undefined یکم بنویسم.

اول در مورد هر کدوم تعریفی داشته باشیم.

تعریف undefined

در جاوا اسکریپت اگر متغیری داشته باشیم که مقدار نداشته باشه هم مقدار هم نوع رو undefined

به ما نشون میده کلمه undefined به معنی (تعریف نشده) هستش.


داخل مثال اول ما متغیری به اسم book داریم که هیچ مقداری نداره و واسه ما undefined رو نمایش میده.

همونطور که در مثال دوم میبینید

ما میتونیم undefined رو به یه متغیر اختصاص بدیم و نتیجه همون چیزی هست که در مثال اول دیدیم.


تعریف empty

کلمه empty به معنی (خالی) هست اما هیچ ربطی به undefined نداره و کاملا متفاوت هستند.

مثالی از empty رو میتونیم رشته ای بدونیم که چیزی رو داخلش ننوشتیم و خالی هست.

در تصویر بالا متغیری رو داریم که مقدارش یه رشته (string) خالی هست

در واقع به اون رشته خالی empty گفته میشه

اما نکته ای که هست اینه که برعکس undefined ها که مقدارشون رو undefined نمایش میدادن empty ها چیزی رو به ما نمایش نمیدن.

و نکته دوم نوع empty ها رشته یا همون (string) هست که جلوتر این موضوع رو بررسی میکنیم.


تعریف Null

در برنامه نویسی Null به معنی (پوچ و تهی هست) در واقع چیزی وجود نداره.

ما میتونیم Null رو به یک متغیر اختصاص بدیم.

در مثال بالا مقدار Null به متغیر book اختصاص داده شده به این معنی که چیزی داخلش نیست و تهی هست.


اما تفاوت و شباهت های null و undefined چیه؟

از لحاظ نوع که بخوایم بررسیشون کنیم یکم باید منتظر چیزای عجیب باشیم.

در جاوااسکریپت متدی هست به نام typeof که نوع متغیری که تعریف کردیم رو به ما اعلام میکنه

بریم و ببینیم که typeof چه نوعی رو به ما نمایش میده.

قبل تر گفتیم که نوع undefined همون undefined میشه

و اینم گفتیم که empty همون رشته هست که چیزی داخلش ننوشتیم یعنی string

اما میرسیم به همون چیز عجیبی که گفتم یعنی نوع Null که object هست ?

حالا بنا به هر دلایلی Null یک شیء (object) هست و ما خیلی کاری به این قضیه نداریم

این مباحث تئوری هستش و ما صرفا نوع و اینکه در عمل چیکار میکنن رو میخوایم بدونیم.

اما با تعریفات بالا میشه اینطور جمع بندی کرد که undefined و Null

در نوع کاملا متفاوت هستن ولی در مقدار مساوی

در واقع هردو چیزی برای نمایش دادن به ما ندارن

تصویر بالا شاید به درک این موضوع کمک کنه

به مثال بالا هم اگر نگاهی بندازیم خالی از لطف نیست

ابتدا نوع رو بهمون نمایش داده بعد با عملگر های (==) و (===) اون هارو مقایسه کرده

از لحاظ نوع که برابر نیستن و گفتیم که متفاوتن.

دومی از لحاظ مقدار که برابرن.

توضیح : (==) مقایسه مقدار رو انجام میده که به ما true نمایش داده

(===) مقایسه رو از لحاظ نوع و مقدار انجام میده و چون نوع متفاوته به ما false نمایش داده شده.


به آخر رسیدیم

ممنون از وقتی که گذاشتین و امیدوارم بهتون کمک کرده باشه.


جاوا اسکریپتبرنامه نویسینرم افزارUndefinednull
علاقه مند به حوزه تکنولوژی , برنامه نویس Front - end
شاید از این پست‌ها خوشتان بیاید