
بخش ۱: اعلان (Declaration) و مقداردهی اولیه (Initialization) متغیرها
به عنوان یک توسعهدهنده ارشد، شما نه تنها باید بدانید که چطور کد بنویسید، بلکه باید بدانید چرا اینگونه کد مینویسید. انتخاب بین var، let و const یکی از این تصمیمهاست.
مفاهیم کلیدی:
-
var(منسوخ شده برای استفاده مدرن):- محدوده (Scope): Function-scoped (محدوده تابع). یعنی اگر داخل یک تابع تعریف شود، فقط در همان تابع قابل دسترسی است.
- بازتعریف (Redeclaration): مجاز است. (این میتواند منبع خطا باشد)
- Hoisting: متغیر به بالای Scope خود منتقل میشود، اما با مقدار
undefined.
-
let(انتخاب استاندارد برای متغیرهای قابل تغییر):- محدوده (Scope): Block-scoped (محدوده بلوک). یعنی فقط در داخل آکولاد
{}ی که در آن تعریف شده (مانند حلقهها، شرطها، توابع) قابل دسترسی است. - بازتعریف (Redeclaration): در همان Scope مجاز نیست.
- تغییر مقدار (Reassignment): مجاز است.
- محدوده (Scope): Block-scoped (محدوده بلوک). یعنی فقط در داخل آکولاد
-
const(انتخاب پیشفرض و استاندارد):- محدوده (Scope): Block-scoped.
- بازتعریف (Redeclaration): مجاز نیست.
- تغییر مقدار (Reassignment): مجاز نیست. (توجه: این به معنی “ثابت بودن” خود مقدار نیست، بلکه به معنی “ثابت بودن ارجاع” است. در ادامه با اشیا و آرایهها این را دقیقتر بررسی میکنیم.)
- مقداردهی اولیه: حتماً باید در لحظهٔ اعلان، مقداردهی شود.
نکته حرفهای: یک توسعهدهنده ارشد همیشه سعی میکند حالت پیشفرض را const قرار دهد و تنها در صورتی که واقعاً نیاز به تغییر مقدار متغیر بود، از let استفاده میکند. این کار باعث کاهش خطاهای ناشی از تغییرات ناخواسته و خوانایی بیشتر کد میشود. از var فقط برای نگهداری کدهای قدیمی استفاده میکنیم.
ارزیابی بخش ۱:
سؤال ۱: تحلیل کد خروجی قطعه کد زیر چیست و دلیل آن را به زبان ساده توضیح دهید.
function testVariables() {
if (true) {
var nameVar = "Ali";
let nameLet = "Reza";
const nameConst = "Sara";
}
console.log(nameVar);
console.log(nameLet);
console.log(nameConst);
}
testVariables();سؤال ۲: انتخاب بهترین گزینه
کدام گزینه برای تعریف هر یک از موارد زیر بهترین گزینه است؟ (const یا let)
- الف) شمارنده یک حلقه (Loop Counter)
- ب) مقدار PI (عدد ثابت ریاضی)
- ج) یک شیء (Object) که قرار است خصوصیات آن در طول برنامه تغییر کند.
- د) یک آرایه (Array) که قرار است عناصر جدیدی به آن اضافه شود.