Синтаксична помилка VS runtime
1. Що таке синтаксична помилка (Syntax Error)
Синтаксична помилка (SyntaxError) - це помилка, яка виникає ще до запуску програми, коли JavaScript не може розібрати код, тому що в ньому порушені правила синтаксису мови.
Простіше кажучи: код не можна навіть почати виконувати.
Приклади синтаксичних помилок
if (true { // пропущена дужка
console.log("ok");
}function() { // функція без імені
console.log("hi");
}const a = ; // після "=" немає значенняТакі помилки інтерпретатор виявляє на етапі парсингу (до виконання), тому код не запуститься взагалі.
Приклад з поясненням
console.log("до помилки");
eval("let x = ;"); // SyntaxError
console.log("після помилки"); // не виконаєтьсяПомилка виникає одразу при спробі інтерпретувати рядок, тому до другого console.log програма не дійде.
2. Що таке runtime-помилка (помилка часу виконання)
Runtime-помилка - це помилка, яка виникає під час виконання програми, вже після того, як код успішно пройшов перевірку синтаксису.
Тобто синтаксис коректний, але логіка програми призводить до збою під час виконання.
Приклади runtime-помилок
console.log(a); // ReferenceError: a is not definedlet obj = null;
obj.name; // TypeError: Cannot read properties of nullJSON.parse("невалідний JSON"); // SyntaxError, але виниклий під час виконанняУ цих випадках код запускається, але ламається на певному рядку під час виконання.
3. Головна відмінність
| Критерій | Синтаксична помилка | Runtime-помилка |
|---|---|---|
| Коли виникає | На етапі парсингу (до запуску коду) | Під час виконання програми |
Чи можна перехопити в try...catch | Ні (код навіть не запуститься) | Так, можна обробити |
| Приклад | if (true { | console.log(a) |
| Реакція JS | Код не виконується взагалі | Виконання переривається на помилці |
| Тип помилки | SyntaxError | ReferenceError, TypeError, RangeError та ін. |
4. Приклад для наочного порівняння
// Синтаксична помилка:
try {
eval("if (true { console.log('hi') }"); // <-- некоректний синтаксис
} catch (e) {
console.log("Спіймали?", e.message);
}
// → цей код навіть не виконається, оскільки помилка до виконання
// Runtime-помилка:
try {
console.log(a); // ReferenceError
} catch (e) {
console.log("Спіймали:", e.message);
}Підсумок
| Термін | Що означає |
|---|---|
| SyntaxError | Помилка в структурі коду - JS не може його інтерпретувати |
| Runtime Error | Помилка при виконанні синтаксично коректного коду |
| Різниця | Перша - на етапі парсингу, друга - на етапі виконання |
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.