متغیرهایی که با let تعریف میکنیم، به Scope وابسته هستن
خیلیها فکر میکنن let فقط یه نسخه مدرنتر از var ـه، ولی فرق مهمی دارن:
برخلاف var که function-scoped هست،
let (و همینطور const) block-scoped هستن.
یعنی فقط داخل بلاک {} قابل دسترس هستن.
وقتی از let استفاده میکنیم، باید مطمئن باشیم که میفهمیم متغیرت توی چه محدودهای استفاده میشه!
این باعث جلوگیری از باگهای پنهان و رفتارهای غیرقابلپیشبینی میشه.
خیلیها فکر میکنن let فقط یه نسخه مدرنتر از var ـه، ولی فرق مهمی دارن:
if (true) {
let x = 10;
}
console.log(x); // ReferenceError
برخلاف var که function-scoped هست،
let (و همینطور const) block-scoped هستن.
یعنی فقط داخل بلاک {} قابل دسترس هستن.
وقتی از let استفاده میکنیم، باید مطمئن باشیم که میفهمیم متغیرت توی چه محدودهای استفاده میشه!
این باعث جلوگیری از باگهای پنهان و رفتارهای غیرقابلپیشبینی میشه.
مقداردهی اولیه به پارامترهای توابع
در جاوااسکریپت میتونیم برای پارامترهای تابع، مقدار پیشفرض تعریف کنیم:
مزیت:
– کدمون تمیزتر و امنتر میشه
– نیازی به if (!name) برای چک کردن وجود مقدار نداریم
– مخصوصاً برای توابع عمومی یا فرمها خیلی مفیده
مقدار پیشفرض میتونه نتیجه یه تابع هم باشه:
در جاوااسکریپت میتونیم برای پارامترهای تابع، مقدار پیشفرض تعریف کنیم:
function greet(name = "مهمان") {
console.log("سلام " + name);
}
greet(); // سلام مهمان
greet("علی"); // سلام علی
مزیت:
– کدمون تمیزتر و امنتر میشه
– نیازی به if (!name) برای چک کردن وجود مقدار نداریم
– مخصوصاً برای توابع عمومی یا فرمها خیلی مفیده
مقدار پیشفرض میتونه نتیجه یه تابع هم باشه:
function generateID() {
return Math.random().toString(36).slice(2);
}
function createUser(id = generateID()) {
console.log("User ID:", id);
}
👍1 1
تفاوت بین توابع عادی و توابع arrow (Arrow Functions)
در نگاه اول، تفاوت این دو فقط توی نحوه نوشتنه. ولی در واقع تفاوتهای مهمتری وجود داره که روی رفتار کد تأثیر میذاره:
1. مقدار this
• تابع عادی:
this به کانتکست فراخوانی وابستهست.
• تابع arrow:
this رو از محیط بیرونی به ارث میبره (Lexical this).
2. سازنده (Constructor)
• توابع عادی میتونن با new استفاده بشن.
• توابع arrow نمیتونن constructor باشن.
3. آرگومانها (arguments)
• توابع عادی به arguments دسترسی دارن.
• توابع arrow ندارن.
4. کاربرد مناسب؟
وقتی از تابع عادی استفاده میکنیم:
– به this یا arguments نیاز داریم
– قراره تابع رو به عنوان constructor استفاده کنیم
وقتی از تابع arrow استفاده میکنیم:
– دنبال کد تمیزتر و کوتاهتری هستیم
– نمیخوایم this تغییر کنه (مثلاً توی callback یا event handler)
در کل اینکه هر دو مفیدن. ولی انتخاب درست باعث میشه که کد هم درستتر کار کنه، هم خواناتر باشه.
در نگاه اول، تفاوت این دو فقط توی نحوه نوشتنه. ولی در واقع تفاوتهای مهمتری وجود داره که روی رفتار کد تأثیر میذاره:
1. مقدار this
• تابع عادی:
this به کانتکست فراخوانی وابستهست.
function sayHi() {
console.log(this);
}
• تابع arrow:
this رو از محیط بیرونی به ارث میبره (Lexical this).
const sayHi = () => {
console.log(this);
}
2. سازنده (Constructor)
• توابع عادی میتونن با new استفاده بشن.
• توابع arrow نمیتونن constructor باشن.
function Person() {} // مجاز
const Person = () => {} // خطا
3. آرگومانها (arguments)
• توابع عادی به arguments دسترسی دارن.
• توابع arrow ندارن.
4. کاربرد مناسب؟
وقتی از تابع عادی استفاده میکنیم:
– به this یا arguments نیاز داریم
– قراره تابع رو به عنوان constructor استفاده کنیم
وقتی از تابع arrow استفاده میکنیم:
– دنبال کد تمیزتر و کوتاهتری هستیم
– نمیخوایم this تغییر کنه (مثلاً توی callback یا event handler)
در کل اینکه هر دو مفیدن. ولی انتخاب درست باعث میشه که کد هم درستتر کار کنه، هم خواناتر باشه.
MERN Stack چیه؟
MERN یکی از محبوبترین ترکیبهای تکنولوژی برای ساخت اپلیکیشنهای وب فولاستک هست.
این اسم از حروف اول ۴ تکنولوژی تشکیل شده:
M – MongoDB
پایگاهداده NoSQL
ساختار document-based
مناسب برای دادههای منعطف و مقیاسپذیر
E – Express.js
فریمورک سبک Node.js
برای ساخت سریع و سادهی API و بکاند
R – React.js
کتابخانه جاوااسکریپت برای ساخت رابط کاربری (Frontend)
کامپوننتمحور، سریع و بسیار محبوب
N – Node.js
موتور اجرای جاوااسکریپت در سمت سرور
اجازه میده با یک زبان (JS) هم فرانت و هم بکاند بنویسی
چرا MERN محبوبه؟
• همهچی با جاوااسکریپت نوشته میشه
• سریع، مدرن و انعطافپذیر
• جامعه کاربری بزرگ و منابع آموزشی زیاد
• مناسب برای ساخت MVP، داشبورد، اپلیکیشنهای SPA و RESTful API
MERN یکی از محبوبترین ترکیبهای تکنولوژی برای ساخت اپلیکیشنهای وب فولاستک هست.
این اسم از حروف اول ۴ تکنولوژی تشکیل شده:
M – MongoDB
پایگاهداده NoSQL
ساختار document-based
مناسب برای دادههای منعطف و مقیاسپذیر
E – Express.js
فریمورک سبک Node.js
برای ساخت سریع و سادهی API و بکاند
R – React.js
کتابخانه جاوااسکریپت برای ساخت رابط کاربری (Frontend)
کامپوننتمحور، سریع و بسیار محبوب
N – Node.js
موتور اجرای جاوااسکریپت در سمت سرور
اجازه میده با یک زبان (JS) هم فرانت و هم بکاند بنویسی
چرا MERN محبوبه؟
• همهچی با جاوااسکریپت نوشته میشه
• سریع، مدرن و انعطافپذیر
• جامعه کاربری بزرگ و منابع آموزشی زیاد
• مناسب برای ساخت MVP، داشبورد، اپلیکیشنهای SPA و RESTful API
👍3