تفاوت ها و شباهت های Null و Undefined در جاوا اسکریپت


جاوا اسکریپت یک زبان جالب و دوست داشتنیه که ممکنه در ذهن ما سوالات زیادی رو ایجاد کنه.یکی از مسائل گیج کننده در جاوا اسکریپت تفاوت ها و شباهت های بین Null و Undefined هست.اکثر برنامه نویسان با Null آشنایی کامل دارند و دلیلش هم میتونه این باشه که در اکثر زبان های برنامه نویسی وجود داره.اما undefined در جاوا اسکریپت چیه؟
null در جاوا اسکریپت
null یعنی هیچ value وجود نداره.دقیقا شبیه دیگر زبان های برنامه نویسی شما می تونید null رو به عنوان value به یک متغیر اختصاص بدید که نشان دهنده این است این متغیر هیچ value ندارد.به مثال زیر توجه کنید:
1 2 3 |
let value = null; console.log(value); // null |
undefined در جاوا اسکریپت
حب تا اینجا مفهوم null رو درک کردیم اما undefined واقعا چه معنا و مفهومی داره؟
undefined معمولا به این معنیه که متغیر declare شده اما هنوز تعریف نشده است.
از مثال قبلی استفاده میکنیم و یک سری تغییرات کوچیک در اون اعمال میکنیم تا undefined رو درک کنیم:
1 2 3 |
let value; console.log(value); // undefined |
در این مثال متغیر declare شده ولی هیچ value به اون اختصاص داده نشده پس نتیجه اون میشه undefined.دقیقا مشابه null شما میتونید value یک متغیر رو برابر با undefined قرار بدید.
1 2 3 |
let value = undefined; console.log(value); // undefined |
سناریو متداول دیگری که شما با undefined روبرو می شوید زمانی است که شما قصد دارید به یک property از object دسترسی داشته باشید که وجود نداره.به مثال زیر توجه کنید
1 2 3 |
let myObject = {}; console.log(myObject.value); // undefined |
در ادامه چنیدن سناریو که برای شما در نتیجه undefined برگشت داده میشه رو لیست میکنم:
- یک object که declare شده اما define نشده.
- دسترسی به property یک object یا index یک آرایه که وجود نداره.
- فراخوانی یک تابع بدون پارامتر های مورد نیازش.
شباهت های Null و Undefined
null و undefined هر دو primitive values در جاوا اسکریپت هستند.Boolean, String و Number نیز در جاوا اسکریپت primitive values هستند.نکته دیگر که باید بهش توجه داشته باشید،زمانی است که شما Null و Undefined رو مقایسه می کنید که با همدیگه برابر هستند.دلیل این موضع هم این است که هردو آنها falsy values در جاوا اسکریپت در نظر گرفته می شوند.
null == undefined
تفاوت های Null و Undefined
من در بسیاری از کدها دیدم که از null checking برای properties هایی که تعریف نشده اند،استفاده شده اسنت.این کار اشتباه است و منجر به نتایج غیرقابل انتظاری خواهد شد.properties های تعریف نشده در بسیاری از زبان های برنامه نویسی به صورت پیشفرض null در نظر گرفته می شود اما در جاوا اسکریپت undefined در نظرگرفته می شود.اون چیزی که باعث گمراهی بیشتر میشه اینکه شما اگر (x == null) رو چک کنید حتی اگر x در واقع undefined باشد،نتیجه چک true خواهد بود.دلیل این موضع برمیگرده به type coercion که در جاوا اسکریپت اتفاق میفته.
1 2 |
console.log(typeof(undefined)); //"undefined" console.log(typeof(null)); //"object" |
1 2 |
null !== undefined null == undefined |
یکی دیگه از تفاوت های جالبی که شما باید بهش توجه داشته باشید زمان انجام عملیات های ریاضی با null و undefined است.عملیات های با null value نتیجه integer value خواهد داشت در حالی که هر عملیات ریاضی با undefined نتیجه اون Nan خواهد بود.
1 2 3 4 5 6 7 |
let a = 5 + null; console.log(a); // 5 let b = 5 + undefined; console.log(b); // NaN |
اگر از این مقاله لذت بردید و براتون مفید بود،اون رو با دوستان و همکارنتون به اشتراک بزارید .
منبع : بلاگ مشفق همدانی
دیدگاهتان را بنویسید