پوچ و تعریف نشده

جاوا اسکریپت راه های متعددی برای نشان دادن عدم وجود یک مقدار دارد. این صفحه دو روش متداول را شرح می دهد: نوع داده های null و undefined .

کلمه کلیدی 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 چه چیزی را برمی گرداند؟

undefined
primitive
object
string