
پاسخهای بخش ۲:
**پاسخ ۱:
- متغیر
numberباvarبه بالا منتقل (hoist) میشود اما مقداردهی نمیشود، بنابراینundefinedچاپ میشود.
**پاسخ ۲:
- خط اول: ✅ کار میکند چون محتوای آرایه را تغییر میدهیم، نه خود متغیر
colorsرا - خط دوم: ❌ خطا میدهد چون سعی میکنیم متغیر
constرا به یک آرایه جدید نسبت دهیم
**پاسخ ۳:
- هر دو block-scoped هستند
- هر دو hoist میشوند اما قبل از مقداردهی قابل استفاده نیستند (Temporal Dead Zone)
- متغیر از نوع
constبعد از مقداردهی اولیه قابل reassignment نیست - اما محتوای object/arrayهای
constقابل تغییر است
خلاصه تفاوتهای مهم:
| ویژگی | var | let | const |
|---|---|---|---|
| Scope | تابعی | بلوکی | بلوکی |
| قابل تغییر | ✅ | ✅ | ❌ |
| Hoisting | ✅ (با undefined) | ✅ (اما قبل از مقداردهی خطا میدهد) | ✅ (اما قبل از مقداردهی خطا میدهد) |
| مقداردهی اولیه | اختیاری | اختیاری | الزامی |
بخش ۳: انواع داده - اطلاعاتی که ذخیره میکنیم
۱. رشته (String) - برای متنها
let name = "سارا";
let message = 'سلام دنیا!';
let template = `سلام ${name}`; // روش جدید با قابلیت قراردادن متغیرمتدهای مفید رشته:
let text = " JavaScript ";
console.log(text.length); // 13 (طول رشته)
console.log(text.trim()); // "JavaScript" (حذف فضاهای اضافه)
console.log(text.toUpperCase()); // " JAVASCRIPT "
console.log(text.toLowerCase()); // " javascript "
console.log(text.includes("Java")); // true
console.log(text.slice(2, 6)); // "Java" (برش رشته)۲. عدد (Number) - برای محاسبات
let integer = 42; // عدد صحیح
let decimal = 3.14; // عدد اعشاری
let negative = -10; // عدد منفیمتدهای مفید عدد:
let num = 123.456;
console.log(num.toFixed(2)); // "123.46" (گرد کردن)
console.log(num.toString()); // "123.456" (تبدیل به رشته)
// تبدیل رشته به عدد
console.log(parseInt("100px")); // 100
console.log(parseFloat("3.14cm")); // 3.14مقادیر خاص:
console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
console.log("text" * 2); // NaN (Not a Number)۳. بولین (Boolean) - درست یا غلط
let isActive = true;
let isEmpty = false;مقادیر truthy و falsy:
- falsy values:
false,0,"",null,undefined,NaN - بقیه مقادیر truthy هستند (حتی
"0","false",[],{})
// مثالهای کاربردی
if ("") {
console.log("این اجرا نمیشود"); // "" falsy است
}
if ("سلام") {
console.log("این اجرا میشود"); // هر رشته غیرخالی truthy است
}
if (0) {
console.log("این اجرا نمیشود"); // 0 falsy است
}سؤالات تمرینی بخش ۳:
۱. خروجی کد زیر چیست؟
let price = "200";
let tax = "20";
console.log(price + tax);
console.log(parseInt(price) + parseInt(tax));۲. کدام عبارتهای زیر true برمیگردانند؟
Boolean("") // اول
Boolean("0") // دوم
Boolean(0) // سوم
Boolean([]) // چهارم۳. مشکل کد زیر چیست؟ چگونه اصلاح میشود؟
let userAge = "25سال";
let ageAfter5Years = userAge.toFixed() + 5;