Как остановить выполнение скрипта js
Для остановки выполнения JS кода на странице, можно сделать так:
- Открыть DevTools и перейти на вкладку Sources;
- Выбрать файл с логикой по которому будет вестись работа и найти необходимую строчку кода где необходимо поставить брейкпоинт;
- Слева от строки находится столбец с ее номером. Если на него нажать, то появится синий значок — это и есть брейкпоинт того, чтобы использовать точку останова в DevTools;
Там же, кстати, ими можно и управлять:
- Чтобы отключить брейкпоинт, достаточно убрать галочку рядом с ним
- Удалить брейкпоинт можно с помощью нажатия на правую кнопку мыши около точки останова
Еще бывают точки останова в коде, которые можно самостоятельно поставить в коде. Для создания такого брейкпоинта нужно просто вызвать debugger в коде. Этот подход эквивалентен предыдущему способу, через DevTools, только без использования визуального интерфейса.
console.log('a');
console.log('b');
debugger;
console.log('c');
Еще есть вариант использовать throw. Инструкция throw позволяет генерировать исключения, определяемые пользователем. При этом выполнение текущей функции будет остановлено (инструкции после throw не будут выполнены), и управление будет передано в первый блок catch в стеке вызовов. Если catch блоков среди вызванных функций нет, выполнение программы будет остановлено.
Например:
const sayMeow(cat) => {
if (!cat.meow) {
throw new Error('это не кот и он не умеет говорить мяу!');
}
cat.meow()
}
Ну и наконец можно использовать точки останова в DOM, если вы собираетесь приостановить код, который изменяет узел DOM или его дочерние элементы. Это делается следующим образом:
- Перейдите во вкладку Elements
- Найдите элемент, на который нужно установить брейкпоинт
- Нажмите на элемент правой кнопкой мыши
- Наведите мышь на Break on, а затем выберите Subtree modifications, Attribute modifications или Node removal в зависимости от того, что вы хотите сделать. Ниже расскажем, что это такое и как работает.
Более подробно про точки останова можно прочитать здесь, в интересной статье, на Хекслете.