Техника определения того, где застрял Javascript?

#javascript #debugging #developer-tools

Вопрос:

Я отлаживаю незамутненный код Javascript. В какой-то момент код застревает в какой-то никогда не возвращающейся функции или бесконечном цикле. Каков самый быстрый способ найти эту часть кода? Я предполагаю, что есть лучший способ, чем добавление кучи точек разрыва/отпечатков.

Я использую инструменты разработчика Chrome.

Комментарии:

1. Ты действительно имел в виду не запутанный? То есть » не трудно читать»? Или вы имели в виду запутанное?

2. @Ти Джей Краудер Да, я подумал, что это может быть важно знать. Может быть, это и есть предположение:) Я должен был написать «не запутано», я думаю, что «не запутано» означает «когда-то было запутано».

3. «Не запутанный «-это нормально («де-запутанный» означало бы, что он когда-то был запутан), но на самом деле нет необходимости упоминать об этом. По умолчанию мы будем считать, что вы отлаживаете незамутненный код. 🙂

Ответ №1:

Если вы открываете devtools и ждете, пока код попадет в бесконечный цикл, вы можете нажать кнопку «пауза» в devtools, которая приостановит код где-нибудь в цикле.

введите описание изображения здесь

Например, я написал страницу с этим кодом:

 setTimeout(() =gt; {  let n = 0;  while (isFinite(n)) {  n = n   1;  } }, 800);  

и запустил его, открыл devtools и нажал кнопку паузы. Он приостановил код в while :

введите описание изображения здесь

Ответ №2:

Если вы действительно находитесь в цикле с открытой консолью, перейдите на вкладку «Источники», затем нажмите на значок «Пауза». Код остановится, и вы увидите, где он застрял 🙂