Skip to main content

Синтаксична помилка VS runtime

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Код не виконується взагаліВиконання переривається на помилці
Тип помилкиSyntaxErrorReferenceError, 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Помилка при виконанні синтаксично коректного коду
РізницяПерша - на етапі парсингу, друга - на етапі виконання

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.