جاوااسکریپت: بررسی این که آیا یک متغیر تعریف شده است یا نه

در جاوااسکریپت یک متغیر تعریف شده است «اگر و فقط اگر» حین ِ دسترسی به آن خطای  ِ ReferenceError تولید نشود.

راه ِ معمولی که خیلی‌ها برای ِ بررسی ِ تعریف شده بودن ِ یک متغیر استفاده می‌کنن، به شکل ِ زیر است:

typeof variableName !== 'undefined'

عبارت ِ بولین ِ بالا در دو حالت مقدار ِ false خواهد داشت:

  • متغیر ِ مورد ِ نظر در scope وجود نداشته باشد
  • متغیر ِ مورد ِ نظر وجود داشته باشد و مقدار آن undefined باشد

در غیر ِ این صورت عبارت، مقدار ِ true را برمی‌گرداند.

اما راه ِ مطمئن، درست و البته کمی پردردسر ِ این مشکل، این است که تلاش کنیم تا به متغیر دسترسی پیدا کنیم و سپس اگر خطای ِ RefrenceError تولید شد، آن را catch کنیم و از این طریق بفهمیم که متغیر تعریف شده یا نه:

var barIsDeclared = true; 
try { bar; }
catch (e) {
    if (e.name === "ReferenceError") {
        barIsDeclared = false;
    }
}

منبع: https://stackoverflow.com/questions/16719277/checking-if-a-variable-exists-in-javascript

لینک پست اصلی در وبلاگ شخصی بنده: http://mahdavipanah.com/blog/js-variable-exists/