Ошибка запрета перехода по ссылке в JavaScript

Пусть у нас есть ссылка:

<a href="">link</a>

Получим нашу ссылку в переменную:

let link = document.querySelector('a');

Привяжем к нашей ссылке обработчик клика. Отменим при этом переход по ссылке, чтобы избежать перезагрузки страницы:

link.addEventListener('click', function(event) { console.log(this.textContent); event.preventDefault(); });

Кажется, что мы полностью обезопасили себя от неожиданного поведения. На самом деле это не так. Дело в том, что при возникновении синтаксической ошибки JavaScript код просто не будет выполнен, блокировака ссылки не сработает, и осуществится переход по ней.

В этом случае мы не увидим ни результата выполнения кода, ни ошибки в консоли, ведь страница перезагрузится. Давайте специально сделаем ошибку в коде и убедимся на практике:

link.addEventListener('click', function(event) { thiss.textContent = 'text'; // синтаксическая ошибка event.preventDefault(); });

Такая проблема имеет характерный признак: если смотреть в консоль в момент клика на ссылку, мы на мгновение увидим красную ошибку в консоли, которая почти сразу же пропадет.

Конечно же, прочитать текст ошибки мы не успеем, что существенно затрудняет ее поиск. Есть, однако, хитрый прием. Нужно в href ссыки поставить решетку. В этом случае перехода по ссылке не случится и мы увидим выброшенную в консоль ошибку:

<a href="#">link</a>