جاوا اسکریپت راه های متعددی برای نشان دادن عدم وجود یک مقدار دارد. این صفحه دو روش متداول را شرح می دهد: نوع داده های null
و undefined
.
null
کلمه کلیدی null
نشان دهنده عدم وجود مقدار عمدی تعریف شده است. null
یک ابتدایی است، اگرچه typeof
عملگر نشان می دهد که null
یک شی است. این خطایی است که از نسخه اول جاوا اسکریپت منتقل شده است و عمداً برای جلوگیری از شکستن رفتار مورد انتظار در سراسر وب، بدون آدرس رها شده است.
typeof null
> object
شما ممکن است یک متغیر را null
تعریف کنید با این انتظار که مقداری را که در نقطهای از یک اسکریپت به آن اختصاص داده شده است یا مقداری که صراحتاً وجود ندارد را منعکس کند. همچنین می توانید مقدار null
را به یک مرجع موجود برای پاک کردن مقدار قبلی اختصاص دهید.
undefined
undefined
یک مقدار ابتدایی است که به متغیرهایی که به تازگی اعلان شده اند یا به مقدار حاصل از عملیاتی که مقدار معنی داری را بر نمی گرداند اختصاص می یابد. برای مثال، زمانی که یک تابع را در کنسول برنامهنویس مرورگر اعلام میکنید، ممکن است این اتفاق بیفتد:
function myFunction() {}
> undefined
یک تابع به صراحت undefined
برمی گرداند زمانی که دستور return
آن هیچ مقداری برمی گرداند.
(function() {
return;
}());
> undefined
مقایسه null
و undefined
اگرچه undefined
و null
مقداری همپوشانی عملکردی دارند، اما اهداف متفاوتی دارند. در دقیق ترین معنای، null
یک مقدار را نشان می دهد که عمداً به عنوان "خالی" تعریف شده است، و undefined
نشان دهنده فقدان هر مقدار اختصاص داده شده است.
null
و undefined
تقریباً برابر هستند، اما کاملاً برابر نیستند . عملگر تساوی شل عملوندهای انواع مختلف را به مقادیر بولی وادار می کند و هر دو را null
و undefined
false
کند. عملگر برابری دقیق عملوندهای انواع داده های مختلف را نابرابر در نظر می گیرد.
null == undefined
> true
null === undefined
> false
برخلاف کلمه کلیدی رزرو شده null
, undefined
یک ویژگی شی سراسری است. این یک تصمیم طراحی بود که در اوایل توسعه جاوا اسکریپت گرفته شد و به مرورگرهای قدیمی اجازه میداد کاملاً undefined
بازنویسی کنند. در مرورگرهای مدرن، هنوز هم میتوان از undefined
بهعنوان یک شناسه در محدودههای غیرجهانی استفاده کرد، و مقدار آن را در محدوده آن اعلامیه نادیده گرفت. هرگز از undefined
به عنوان شناسه استفاده نکنید. این می تواند باعث رفتارهای غیرمنتظره شود و احتمالاً نگهبانان آینده کدهای شما را گیج می کند.
درک خود را بررسی کنید
typeof null
چه چیزی را برمی گرداند؟
object
undefined
primitive
string