Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Синтаксична помилка VS runtime». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Синтаксична помилка (SyntaxError)** - це помилка, яка виникає ще до запуску програми, коли JavaScript не може розібрати код через порушення правил синтаксису мови. **Ключове:** синтаксичну помилку рушій виявляє на етапі парсингу (до виконання), тому код не запуститься взагалі, тоді як runtime-помилка виникає під час виконання вже коректного синтаксично коду.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що таке синтаксична помилка (Syntax Error) **Синтаксична помилка (SyntaxError)** - це помилка, яка виникає **ще до запуску програми**, коли JavaScript не може *розібрати* код, тому що в ньому порушені правила синтаксису мови. Простіше кажучи: код **не можна навіть почати виконувати**. ### Приклади синтаксичних помилок ```javascript if (true { // пропущена дужка console.log("ok"); } ``` ```javascript function() { // функція без імені console.log("hi"); } ``` ```javascript const a = ; // після "=" немає значення ``` Такі помилки інтерпретатор виявляє **на етапі парсингу (до виконання)**, тому код **не запуститься взагалі**. ### Приклад з поясненням ```javascript console.log("до помилки"); eval("let x = ;"); // SyntaxError console.log("після помилки"); // не виконається ``` Помилка виникає *одразу при спробі* інтерпретувати рядок, тому до другого `console.log` програма не дійде. ## 2. Що таке runtime-помилка (помилка часу виконання) **Runtime-помилка** - це помилка, яка виникає **під час виконання програми**, вже після того, як код успішно пройшов перевірку синтаксису. Тобто синтаксис коректний, але логіка програми призводить до збою під час виконання. ### Приклади runtime-помилок ```javascript console.log(a); // ReferenceError: a is not defined ``` ```javascript let obj = null; obj.name; // TypeError: Cannot read properties of null ``` ```javascript JSON.parse("невалідний JSON"); // SyntaxError, але виниклий під час виконання ``` У цих випадках код **запускається**, але **ламається на певному рядку** під час виконання. ## 3. Головна відмінність | Критерій | Синтаксична помилка | Runtime-помилка | | --- | --- | --- | | **Коли виникає** | На етапі *парсингу* (до запуску коду) | Під час виконання програми | | **Чи можна перехопити в** `try...catch` | Ні (код навіть не запуститься) | Так, можна обробити | | **Приклад** | `if (true {` | `console.log(a)` | | **Реакція JS** | Код не виконується взагалі | Виконання переривається на помилці | | **Тип помилки** | `SyntaxError` | `ReferenceError`, `TypeError`, `RangeError` та ін. | ## 4. Приклад для наочного порівняння ```javascript // Синтаксична помилка: 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** | Помилка при виконанні синтаксично коректного коду | | **Різниця** | Перша - на етапі *парсингу*, друга - на етапі *виконання* |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.