خطاهای بی صدا (Errors Silent)
اینجا درباره «خطاهای بی صدا جاوااسکریپت» حرف می زنیم. «خطای بی صدا (Silent Error)» یعنی برنامه نمی ایستد، اما نتیجه غلط می شود. مثل بازی که ادامه می دهد، ولی امتیاز اشتباه می گیرد.
خطاهای بی صدا یعنی چه؟
این خطاها استثناء پرتاب نمی کنند. اجرا ادامه می یابد، اما منطق می لغزد. تاریخچه زبان باعث شده برخی خطاها بی سروصدا بگذرند.
ادامه اجرا بدون توقف
برنامه متوقف نمی شود. اما خروجی ممکن است نامعتبر باشد.
let x = 1 / 0;
اشتباه رایج: انتساب به جای مقایسه
علامت «=» مقدار می دهد. مقایسه «==» یا «===» است. اشتباه، بی صدا منطق را خراب می کند.
let isActive = false;
// ❌ انتساب، نه مقایسه
if (isActive = true) {
let result = "Active!";
}
NaN: داده ی بد، بدون استثناء
بعضی عملیات های عددی شکست می خورند، اما خطا نمی دهند. مقدار «NaN» برمی گردد.
// NaN - خطا پرتاب نمی شود
const result = parseInt("abc");
undefined: ویژگیِ پیدا نشد
برداشت ویژگیِ ناموجود، استثناء نمی دهد. فقط «undefined» می گیری.
const user = {};
let result = user.name;
اجبار نوعی: ادامه می دهد، اما غلط
«اجبار نوعی (Type Coercion)» یعنی تغییر خودکار نوع. نتیجه می تواند گیج کننده شود.
let result1 = ('5' + '2');
let result2 = ('5' - '2');
تمرین عملی کوتاه
- نمونه ها را در ادیتور باز کن.
- خروجی را بخوان و تفاوت ها را ببین.
- به مقادیر NaN، undefined و رشته ها دقت کن.
جمع بندی سریع
- خطای بی صدا اجرا را متوقف نمی کند.
- انتساب به جای مقایسه، خطرناک است.
- NaN و undefined بی هشدار می آیند.
- اجبار نوعی می تواند منطق را بشکند.
برای شروع از خطاها: مقدمه کمک بگیر. همچنین صفحه خطاهای بی صدا را به عنوان مرجع نشانه گذاری کن.
منبع مرتبط: JavaScript Errors و JavaScript Error Statements.