JavaScript Common Mistakes

اشتباهات رایج در جاوا اسکریپت و نحوه اجتناب از آنها
۱. عدم اعلام صحیح متغیرها
❌ روش نادرست:
x = 10; // ایجاد یک متغیر بهصورت ضمنی در سطح جهانی (global)
✅ روش صحیح:
let x = 10; // استفاده از `let` یا `const` برای جلوگیری از ایجاد متغیرهای سراسری
۲. اشتباه گرفتن ==
و ===
❌ روش نادرست:
console.log(0 == “”); // true (رفتار غیرمنتظره)
console.log(false == “0”); // true (غیرمنتظره)
✅ روش صحیح:
console.log(0 === “”); // false (مطابق انتظار)
console.log(false === “0”); // false (مطابق انتظار)
همیشه از ===
(مقایسهی سختگیرانه) برای جلوگیری از تبدیل خودکار نوع (type coercion) استفاده کنید.
۳. تغییر آرایه در حین پیمایش (Iteration)
❌ روش نادرست:
let arr = [1, 2, 3, 4];
arr.forEach((item, index) => {
if (item === 2) {
arr.splice(index, 1);
}
});
console.log(arr); // رفتار غیرمنتظره
✅ روش صحیح:
let filteredArr = arr.filter(item => item !== 2);
console.log(filteredArr);
از filter()
برای تغییر آرایه در هنگام پیمایش استفاده کنید.
۴. سوء تفاهم در مورد setTimeout
داخل حلقهها
❌ روش نادرست:
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// خروجی: 3, 3, 3 (به جای 0, 1, 2)
✅ روش صحیح:
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// خروجی: 0, 1, 2
استفاده از let
به جای var
باعث میشود که هر تکرار مقدار خاص خودش را داشته باشد.
۵. فراموش کردن break
در switch
❌ روش نادرست:
let fruit = “apple”;
switch (fruit) {
case “apple”:
console.log(“قرمز”);
case “banana”:
console.log(“زرد”);
}
// خروجی: قرمز زرد (رفتار غیرمنتظره)
✅ روش صحیح:
switch (fruit) {
case “apple”:
console.log(“قرمز”);
break;
case “banana”:
console.log(“زرد”);
break;
}
همیشه از break
برای جلوگیری از ادامه اجرای کد در caseهای بعدی استفاده کنید.
۶. مدیریت نادرست کدهای غیرهمزمان (Async Code)
❌ روش نادرست:
function fetchData() {
let data;
setTimeout(() => {
data = “داده بارگیری شد”;
}, 1000);
return data;
}
console.log(fetchData()); // undefined
✅ روش صحیح:
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve(“داده بارگیری شد”);
}, 1000);
});
}
fetchData().then(console.log);
برای مدیریت عملیاتهای غیرهمزمان از Promises
یا async/await
استفاده کنید.
۷. استفاده از var
به جای let
یا const
❌ روش نادرست:
function example() {
if (true) {
var x = 10;
}
console.log(x); // متغیر همچنان قابل دسترسی است (رفتار غیرمنتظره)
}
✅ روش صحیح:
function example() {
if (true) {
let x = 10;
}
console.log(x); // ReferenceError: x is not defined
}
استفاده از let
یا const
باعث محدود شدن متغیر در بلاک مربوطه میشود.
۸. فراموش کردن return
در توابع arrow function
❌ روش نادرست:
const multiply = (a, b) => { a * b }; // Undefined
✅ روش صحیح:
const multiply = (a, b) => a * b;
اگر از {}
استفاده کنید، باید return
را بهصورت صریح بنویسید.
۹. تعریف پارامترهای تکراری در تابع
❌ روش نادرست:
function sum(a, a) { // خطا در حالت strict mode
return a + a;
}
✅ روش صحیح:
function sum(a, b) {
return a + b;
}
از نامهای یکتا برای پارامترهای توابع استفاده کنید.
۱۰. نادیده گرفتن مشکلات دقت در اعداد اعشاری
❌ روش نادرست:
console.log(0.1 + 0.2 === 0.3); // false
✅ روش صحیح:
console.log(Math.abs(0.1 + 0.2 – 0.3) < Number.EPSILON); // true
برای مقایسهی اعداد اعشاری از Number.EPSILON
استفاده کنید.
با پرهیز از این اشتباهات رایج، کدهای جاوا اسکریپت شما خواناتر و کمخطاتر خواهند بود. 🚀
اگر سوالی دربارهی اشکالزدایی (debugging) دارید، بپرسید! 😊
دیدگاهتان را بنویسید