با سلام و عرض ادب خدمت شما استاد گرامی
سوالی داشتم
من خودم این رو تست کردم و نتیجه ی مثبت گرفتم
برای تعریف متغیر در جاوا اسکریپت از var استفاده نکردم ولی کاملا درست عمل کرد می خواستم بدونم که (bug) بوده یا یک قابلیت جدید به حساب میاد ؟
با تشکر از دوره ی عالیتون خدانگهدار .
دوست عزیز یک سری تعریف خاصی برای انواع متغیر ها وجود داره...
دو نوع کلی از متغیر ها هستن که بدون در نظر داشتن نوع داده هاشون، در هنگام پاک شدن از حافظه یا کش سیستم و مرورگر ما متفاوتن
1- Local variables
این نوع از متغیر ها هنگام تعریف شدن قبل از خودشون کلمۀ کلیدی var رو به همراه دارن که اگر در یک تابع استفاده بشن، با هربار شروع شدن اون تابع بخشی از حافظه رو اشغال می کنن و بلافاصله با تمام شدن اون، از حافظه بیرون خواهند رفت.
همچنین کدهای جاواسکریپت ما که در یک فایل به اجرا در آمدند، اگر دارای متغیر هایی از نوع Local variable باشن پس از اتمام اجرای کدها، از حافظه خارج خواهند شد.
در صورت مقداردهی اونها داخل یک تابع، بیرون اون تابع برای قطعه های دیگۀ کد قابل شناسایی نیستن.
2- Global variables
این نوع از متغیر هایی تشکیل شده که حتی بیرون از توابع خودشون برای قطعه های دیگۀ کد کاملا قابل دسترسی هستند؛ تنها بعد از اینکه مرورگر شما بسته شد از حافظه بیرون می روند و در کل برای هر گوشۀ فایل جاری و یا فایل های جاواسکریپتی دیگه قابل دسترسی هستند.
به طور مثال توجه کنین:
sampleFunction();
console.log(firstVariable);
function sampleFunction() {
firstVariable = 15;
}اگر کد رو اجرا کنیم می بینیم که اول متغیرمون بخاطر فراخوان تابع مقداردهی میشه؛ بعد از اون هم اون رو لاگ می زنیم و می بینیم با اینکه از کلمۀ کلیدی var هم استفاده نکردیم، بخاطر خاصیت متغیرهای Global حتی بعد از اتمام تابع هنوز متغیرمون قابل دسترسه.