Ошибки JavaScript: как их находить и устранять
Пишете скрипт и сразу видите, что что‑то не так? На самом деле большинство багов возникают из‑за простых промахов: забытый ;, неправильный контекст или неверный порядок загрузки. Давайте разберём самые частые ошибки и сразу покажем, как их фиксить без лишних головных болей.
Самые распространённые ошибки
1️⃣ ReferenceError: переменная не объявлена. Вы вызываете myVar
, но нигде её не объявляете через let
, const
или var
. Решение – всегда объявлять переменные перед использованием и проверять console.log
в начале функции.
2️⃣ TypeError: нельзя выполнить функцию. Чаще всего вы пытаетесь вызвать метод у undefined
или null
. Проверяйте, что объект существует: if (obj && obj.method) { … }
.
3️⃣ SyntaxError при работе с JSON. Вы парсите строку, но в ней одинарные кавычки или лишняя запятая. Используйте JSON.stringify
для генерации и JSON.parse
только для проверенных данных.
4️⃣ Проблемы с async/await. Вы забываете добавить await
перед промисом, и код идёт дальше, пока запрос не завершён. Всегда ставьте await
внутри async
функции или используйте .then()
.
5️⃣ Неправильный порядок загрузки скриптов. Если script
без defer
или async
подключён в head
, он блокирует построение DOM. Переместите его в конец body
или добавьте defer
.
Практики отладки
Самый надёжный способ увидеть, где ошибка, – пользоваться консолью браузера. Откройте DevTools (F12), выберите вкладку Console
и ищите красные сообщения. Если видите Uncaught TypeError
, кликните по строке, чтобы перейти к коду.
Для сложных багов ставьте debugger;
прямо в коде. При выполнении скрипта браузер остановится, и вы сможете шаг за шагом пройтись по переменным. Не забывайте удалять такие строки перед продакшеном.
Еще один полезный трюк – использовать console.table()
для массивов и объектов. Вместо громоздкого console.log()
вы получаете читабельную таблицу, где сразу видно, какие свойства пустые или имеют неправильный тип.
Если ошибка появляется только в определённом браузере, проверьте Can I use
и полифиллы. Часто “не работает в Edge” – это просто отсутствие поддержки новой функции.
Наконец, автоматизируйте проверку с помощью линтеров (ESLint). Они находят синтаксические и стилистические ошибки ещё до запуска кода. Настройте правила под ваш стиль, и каждый коммит будет уже «чистым».
Подводя итог: большинство ошибок JavaScript связаны с недостающими проверками, неправильным контекстом и загрузкой скриптов. Регулярно проверяйте консоль, используйте debugger
и линтеры, и ваш код будет стабильнее. Попробуйте один из советов прямо сейчас, и вы сразу почувствуете разницу.