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

جاوا اسکریپت زبان جالبیه البته همراه با سوالات بسیار زیاد. یکی از این جنبه های گیج کننده در جاوا اسکریپت تفاوت ها و شباهت های بین null و undefined هستش. خیلی هامون از null با خبریم و می دونیم توی همه زبان های برنامه نویسی هم وجود داره. اما بهتر بدونیم که چیا توی جاوا اسکریپت undefined هستن.

تعریف null در جاوا اسکریپت

در تعریف null یعنی هیچ ارزشی وجود ندارد.درست مثل سایر زبانهای برنامه نویسی ، شما می تونید مقدار null را به یک متغیر اختصاص دهید ، که نشان می دهد هیچ مقداری نداره.این یعنی اینکه صریحاً خالی هستش. مثل این مثال:

let value = null;
console.log(value); // null

تعریف undefined در جاوا اسکریپت

خوب ، ما به آنچه null انجام می ده می رسیم. منظور از undefined واقعاً چیه؟

به طور کلی Undefined به معنای اعلام یک متغیر است ، اما تعریف نشده است.

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

let value;
console.log(value); // undefined

در این حالت value اعلام شده است اما به آن مقداری اختصاص داده نمی شود.در نتیجه این یک undefined است.درست مانند null ، می تونید یک متغیر را روی مقدار تعریف نشده تعیین کنید.

let value = undefined;
console.log(value);  // undefined

یکی دیگر از سناریوهای رایج ، که در آن با یک undefined روبرو خواهید شد ، تلاش برای دستیابی به property یک object است که وجود ندارد. بیایید مثالی را در زیر نشان دهیم که در آن توضیح داده شده است.

let myObject = {};
console.log(myObject.value); // undefined

به طور خلاصه ، در اینجا برخی از سناریوهایی وجود دارد که در آنها شاهد بازگشت undefined هستند.

  • یک object اعلام می شود اما تعریف / مقداردهی اولیه نشده است.
  • دسترسی به object property یا index آرایه ای که وجود ندارد.
  • فراخوانی یک تابع بدون پارامترهای مورد نیاز آن.

شباهتشون در چی هستش؟

هر دو null و undefined مقادیر ابتدایی در JavaScript هستند. برخی از مقادیر ابتدایی دیگر شامل Boolean ، String و Number است.نکته دیگری که باید به آن توجه بشه اینه که هنگام مقایسه صفر و تعریف نشده با استفاده از یک بررسی برابری ، مساوی هستن. دلیل این امر اینه که هر دو در JavaScript مقادیر کاذب محسوب می شن.با این حال ، اگر یک بررسی دقیق برابری === انجام بدید ،می بینید که اینها برابر نیستن.

null == undefined // true
null === undefined //false

تفاوت ها در چی هستش؟

برابری; بسیاری از پایگاه های کد که بررسی کردم متوجه شدم تعداد زیادی از ویژگی های Uninitialized را بررسی می کنن. این اشتباهه و منجر به یک رفتار غیر منتظره می شه. خصوصیات Uninitialized در زبانهای دیگر مقدار null پیش فرض دارند ، اما در JavaScript ، به صورت undefined هستن. آنچه آن را حتی بیشتر گمراه کننده می کند این است که اگر شما یک برابری آزاد را از (x == null) انجام دهید ، حتی اگر x تعریف نشده باشد ، این درست خواهد بود. این به دلیل نوع اجباری است که در JavaScript اتفاق می افتد.

به طور کلی null کاملاً با undefined برابر نیست. اما null آزادانه برابر با undefined است.

console.log(typeof(undefined));  //&quotundefined&quot
console.log(typeof(null));       //&quotobject&quot

در اینجا توجه کنید که undefined از نوع undefined است در حالی که null یک object است.

null !== undefined
null == undefined

عملیات حسابی; تفاوت جالب دیگه ای که باید به اون توجه بشه این هستش که وقتی عملیات حساب با null در مقابل undefined انجام می شه.عمليات حسابي با مقدار null منجر به مقدار عدد صحیح می شود در حالی که هر عمل حسابی با undefined منجر به تغییر مقدار متغیر به NaN می شه.

let a = 5 + null;
console.log(a); // 5let b = 5 + undefined;
console.log(b); // NaN

خب به انتها مقاله رسیدیم و امیدوارم تونسته باشم نکات خوبی توی این مقاله خدمتتون منتقل کرده باشم.

ممنون از توجهتون :)