ÐеÑед Ñим, Ñк пÑиÑÑÑпиÑи до напиÑÐ°Ð½Ð½Ñ ÑкладнÑÑого кодÑ, поговоÑÑмо пÑо його налагодженнÑ.
ÐÐ°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ â Ñе пÑоÑÐµÑ Ð¿Ð¾ÑÑÐºÑ Ñ Ð²Ð¸Ð¿ÑÐ°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº в ÑкÑипÑÑ. УÑÑ ÑÑÑаÑÐ½Ñ Ð±ÑаÑзеÑи Ñа бÑлÑÑÑÑÑÑ ÑнÑÐ¸Ñ ÑеÑÐµÐ´Ð¾Ð²Ð¸Ñ ÑозÑобки пÑдÑÑимÑÑÑÑ ÑнÑÑÑÑменÑи Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ â ÑпеÑÑалÑний гÑаÑÑÑний ÑнÑеÑÑейÑ, Ñкий знаÑно ÑпÑоÑÑÑ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ. ÐÑн Ñакож дозволÑÑ Ð¿Ð¾ÐºÑоково вÑдÑÑежÑваÑи, Ñо Ñаме вÑдбÑваÑÑÑÑÑ Ð² кодÑ.
Ðи бÑдемо викоÑиÑÑовÑваÑи бÑаÑÐ·ÐµÑ Chrome, ÑÐ¾Ð¼Ñ Ñо в нÑого доÑÑаÑнÑо можливоÑÑей Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ. РбÑлÑÑоÑÑÑ ÑнÑÐ¸Ñ Ð±ÑаÑзеÑÑв пÑоÑÐµÑ Ð±Ñде ÑÑ Ð¾Ð¶Ð¸Ð¼.
Ðкладка âSourcesâ (âÐ²Ð¸Ñ Ñдний кодâ)
ÐÐ°Ñ Ð±ÑаÑÐ·ÐµÑ Chrome може виглÑдаÑи ÑÑÐ¾Ñ Ð¸ ÑнакÑе в залежноÑÑÑ Ð²Ñд веÑÑÑÑ, але ÑÑзниÑÑ Ð±Ñде не ÑÑÑÑÑвоÑ.
- РбÑаÑзеÑÑ Chrome, вÑдкÑийÑе ÑеÑÑÐ¾Ð²Ñ ÑÑоÑÑнкÑ.
- ÐÑдкÑийÑе ÑнÑÑÑÑменÑи ÑозÑобника, наÑиÑнÑвÑи клавÑÑÑ F12 (або Cmd+Opt+I на Mac).
- ÐибеÑÑÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÑ
Sources.
У Ð²Ð°Ñ Ð±Ñде ÑÑ Ð¾Ð¶Ðµ вÑкно:
Ðнопка-пеÑÐµÐ¼Ð¸ÐºÐ°Ñ Ð»ÑвоÑÑÑ Ð²ÑдкÑÐ¸Ð²Ð°Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ð· Ñайлами.
ÐаÑиÑнÑÑÑ Ð½Ð° Ð½ÐµÑ Ñа вибеÑÑÑÑ Ñайл hello.js. ÐÑÑ Ñк бÑде виглÑдаÑи вкладка Sources:
Цей ÑнÑеÑÑÐµÐ¹Ñ ÑкладаÑÑÑÑÑ Ð· ÑÑÑÐ¾Ñ ÑаÑÑин:
- Ðа Ð¿Ð°Ð½ÐµÐ»Ñ ÐавÑгаÑÐ¾Ñ ÑайлÑв (File Navigator) Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ Ñайли HTML, JavaScript, CSS Ñа ÑнÑÑ Ñайли, вклÑÑно Ñз зобÑаженнÑми, ÑÐºÑ Ð²Ð¸ÐºÐ¾ÑиÑÑовÑÑÑÑÑÑ Ð½Ð° ÑÑоÑÑнÑÑ. Також ÑÑÑ Ð¼Ð¾Ð¶ÑÑÑ Ð±ÑÑи Ñайли вÑд ÑозÑиÑÐµÐ½Ñ Chrome.
- ÐÐ°Ð½ÐµÐ»Ñ Ð ÐµÐ´Ð°Ð³ÑÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ (Code Editor) показÑÑ Ð²Ð¸Ñ Ñдний код.
- ÐÐ°Ð½ÐµÐ»Ñ ÐÐ°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ JavaScript (JavaScript Debugging) викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ, ми повеÑнемоÑÑ Ð´Ð¾ ÑÑого пÑзнÑÑе.
ÐожеÑе Ð·Ð½Ð¾Ð²Ñ Ð½Ð°ÑиÑнÑÑи на ÑÑ ÑÐ°Ð¼Ñ ÐºÐ½Ð¾Ð¿ÐºÑ , Ñоб закÑиÑи Ð¿Ð°Ð½ÐµÐ»Ñ Ñ Ð·Ð²ÑлÑниÑи мÑÑÑе Ð´Ð»Ñ ÐºÐ¾Ð´Ñ.
ÐонÑолÑ
ЯкÑо наÑиÑнÑÑи клавÑÑÑ Esc, в нижнÑй ÑаÑÑÐ¸Ð½Ñ ÐµÐºÑана вÑдкÑиÑÑÑÑÑ ÐºÐ¾Ð½ÑолÑ. ТÑди можна вводиÑи команди Ñ ÑÑ Ð²Ð¸ÐºÐ¾Ð½ÑваÑи, наÑиÑнÑвÑи клавÑÑÑ Enter.
ÐижÑе показÑÑÑÑÑÑ ÑезÑлÑÑÐ°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´.
ÐапÑиклад, ÑезÑлÑÑаÑом 1 + 2 бÑде 3, а оÑÑ ÑнÑÑÑÑкÑÑÑ hello("debugger") нÑÑого не повеÑÑаÑ, ÑÐ¾Ð¼Ñ ÑезÑлÑÑÐ°Ñ Ð±Ñде undefined:
ТоÑки зÑпинки (breakpoints)
РозбеÑÑмоÑÑ Ñк пÑаÑÑÑ ÐºÐ¾Ð´ на ÑеÑÑовÑй ÑÑоÑÑнÑÑ. У ÑÐ°Ð¹Ð»Ñ hello.js, наÑиÑнÑÑÑ Ð½Ð° ÑÑдок Ð½Ð¾Ð¼ÐµÑ 4. Так, на ÑÐ°Ð¼Ñ ÑиÑÑÑ, не по кодÑ.
ÐÑÑаÑмо! Ðи поÑÑавили ÑоÑÐºÑ Ð·Ñпинки. ÐоÑÑавÑе Ñакож ÑоÑÐºÑ Ð·Ñпинки на 8 ÑÑдкÑ.
ÐомеÑи ÑÑдкÑв маÑÑÑ ÑÑаÑи ÑинÑого колÑоÑÑ. ÐÑÑ Ñо в ÑезÑлÑÑаÑÑ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ð¾ вийÑи:
ТоÑка зÑпинки â Ñе мÑÑÑе в кодÑ, де налагоджÑÐ²Ð°Ñ Ð°Ð²ÑомаÑиÑно (ÑимÑаÑово) зÑпиниÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ JavaScript.
Ðоки Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (ÑимÑаÑово) зÑпинене, ми можемо пеÑеглÑдаÑи поÑоÑÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð·Ð¼ÑÐ½Ð½Ð¸Ñ , виконÑваÑи команди в конÑÐ¾Ð»Ñ ÑоÑо. ÐнакÑе кажÑÑи, можемо налагоджÑваÑи (ÑозÑобники Ñнколи кажÑÑÑ Â«Ð´ÐµÐ±Ð°Ð¶Ð¸Ñи», вÑд Ñлова «debug»).
РпÑавÑй ÑаÑÑÐ¸Ð½Ñ Ð¿Ð°Ð½ÐµÐ»Ñ Ð²Ð¸Ð´Ð½Ð¾ вÑÑ ÑоÑки зÑпинки. Ðоли виÑÑавлено багаÑо ÑÐ°ÐºÐ¸Ñ ÑоÑок, Ñа Ñе й в ÑÑÐ·Ð½Ð¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ , Ñей ÑпиÑок дозволÑÑ ÐµÑекÑивно ними кеÑÑваÑи:
- Швидко пеÑемÑÑаÑиÑÑ Ð´Ð¾ бÑдÑ-ÑÐºÐ¾Ñ ÑоÑки зÑпинки в ÐºÐ¾Ð´Ñ â поÑÑÑбно клаÑнÑÑи по нÑй в пÑавÑй ÑаÑÑÐ¸Ð½Ñ Ð¿Ð°Ð½ÐµÐ»Ñ.
- ТимÑаÑово вимкнÑÑи ÑоÑÐºÑ Ð·Ñпинки, знÑвÑи видÑленнÑ.
- ÐидалиÑи ÑоÑÐºÑ â поÑÑÑбно клаÑнÑÑи по нÑй пÑÐ°Ð²Ð¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ñ Ð¼Ð¸ÑÑ Ð¹ вибÑаÑи «Remove breakpoint» (ÐидалиÑи ÑоÑÐºÑ Ð·Ñпинки).
- â¦ÑоÑо.
Ðожна задаÑи Ñак Ð·Ð²Ð°Ð½Ñ ÑÐ¼Ð¾Ð²Ð½Ñ ÑоÑÐºÑ Ð·Ñпинки â клаÑнÑÑÑ Ð¿ÑÐ°Ð²Ð¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ñ Ð¼Ð¸ÑÑ Ð¿Ð¾ номеÑÑ ÑÑдка в кодÑ, вибеÑÑÑÑ Ð¿ÑÐ½ÐºÑ âEdit breakpointâ¦â Ñ Ð¿ÑопиÑÑÑÑ ÑмовÑ. Ðоли ÑÑ Ñмова виконаÑÑÑÑÑ, Ñо Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ (ÑимÑаÑово) зÑпиниÑÑÑÑ Ð² ÑÑй ÑоÑÑÑ Ð·Ñпинки.
Цей меÑод викоÑиÑÑовÑÑÑÑÑÑ, коли поÑÑÑбно (ÑимÑаÑово) зÑпиниÑи Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ð¿Ñд ÑÐ°Ñ ÑпеÑиÑÑÑÐ½Ð¸Ñ Ð·Ð½Ð°ÑÐµÐ½Ñ Ð·Ð¼ÑÐ½Ð½Ð¸Ñ Ð°Ð±Ð¾ паÑамеÑÑÑв ÑÑнкÑÑÑ.
Ðоманда âdebuggerâ
ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ñакож можна (ÑимÑаÑово) зÑпинÑÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ñ debugger пÑÑмо вÑеÑÐµÐ´Ð¸Ð½Ñ ÐºÐ¾Ð´Ñ, оÑÑ Ñак:
function hello(name) {
let phrase = `ÐÑивÑÑ, ${name}!`;
debugger; // <-- ÑÑÑ Ð·ÑпиниÑÑÑÑ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÑваÑ
say(phrase);
}
Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° пÑаÑÑÑ Ð»Ð¸Ñе ÑодÑ, коли ÑнÑÑÑÑменÑи ÑозÑобника вÑдкÑиÑÑ, ÑнакÑе бÑаÑÐ·ÐµÑ ÑÑ ÑгноÑÑÑ.
ÐÑпинÑÑÑÑÑ Ð¹ озиÑнÑÑÑÑÑ
РнаÑÐ¾Ð¼Ñ Ð¿ÑикладÑ, ÑÑнкÑÑÑ hello() викликаÑÑÑÑÑ Ð¿Ñд ÑÐ°Ñ Ð·Ð°Ð²Ð°Ð½ÑÐ°Ð¶ÐµÐ½Ð½Ñ ÑÑоÑÑнки, оÑже, найÑвидÑим ÑпоÑобом акÑивÑваÑи налагоджÑÐ²Ð°Ñ (пÑÑÐ»Ñ Ñого, Ñк ми поÑÑавили ÑоÑÐºÑ Ð·Ñпинки) â Ñе пеÑезаванÑажиÑи ÑÑоÑÑнкÑ. Ð¢Ð¾Ð¼Ñ Ð¿ÑоÑÑо наÑиÑнÑÑÑ F5 (Windows, Linux) Ñи Cmd+R (на Mac).
ÐÑкÑлÑки ми поÑÑавили ÑоÑÐºÑ Ð·Ñпинки, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ (ÑимÑаÑово) зÑпиниÑиÑÑ Ð½Ð° 4-Ð¼Ñ ÑÑдкÑ:
Щоб зÑозÑмÑÑи, Ñо вÑдбÑваÑÑÑÑÑ Ð² кодÑ, наÑиÑнÑÑÑ Ð½Ð° ÑÑÑÑлки ÑпÑава. Ðожна видÑлиÑи ÑÑи оÑÐ½Ð¾Ð²Ð½Ñ Ð±Ð»Ð¾ÐºÐ¸:
-
WatchпоказÑÑ Ð¿Ð¾ÑоÑÐ½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð²Ð¸ÑазÑв.ÐожеÑе наÑиÑнÑÑи на
+Ñ Ð²Ð²ÐµÑÑи ÑкийÑÑ Ð²Ð¸Ñаз. РпÑоÑеÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ, налагоджÑÐ²Ð°Ñ Ð°Ð²ÑомаÑиÑно пеÑеÑÐ°Ñ Ð¾Ð²ÑваÑиме Ñ Ð¿Ð¾ÐºÐ°Ð·ÑваÑиме його знаÑеннÑ. -
Call StackпоказÑÑ Ð¿Ð¾ÑлÑдовнÑÑÑÑ Ð²Ð¸ÐºÐ»Ð¸ÐºÑв ÑÑнкÑÑй.РнаÑÐ¾Ð¼Ñ Ð¿ÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÑÐ²Ð°Ñ (ÑимÑаÑово) зÑпинив Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑнкÑÑÑ
hello(), Ñка бÑла викликана з ÑайлÑindex.html(Ñам Ð½ÐµÐ¼Ð°Ñ ÑÑнкÑÑÑ, ÑÐ¾Ð¼Ñ Ð²Ð¸ÐºÐ»Ð¸Ðº âanonymousâ â анонÑмний).ÐаÑиÑнÑвÑи на ÐµÐ»ÐµÐ¼ÐµÐ½Ñ ÑпиÑÐºÑ (напÑиклад, на âanonymousâ), налагоджÑÐ²Ð°Ñ Ð¿ÐµÑейде до вÑдповÑдного кодÑ, де бÑло здÑйÑнено виклик.
-
ScopeпоказÑÑ Ð¿Ð¾ÑоÑÐ½Ñ Ð·Ð¼ÑннÑ.Ð
LocalпоказÑÑÑÑÑÑ Ð»Ð¾ÐºÐ°Ð»ÑÐ½Ñ Ð·Ð¼ÑÐ½Ð½Ñ ÑÑнкÑÑÑ, а ÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ Ð¿ÑдÑвÑÑÑÑÑÑÑÑ Ð² Ð²Ð¸Ñ ÑÐ´Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ.Ð
GlobalпоказÑÑÑÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑÐ½Ñ Ð·Ð¼ÑÐ½Ð½Ñ (ÑобÑо ÑÑ, ÑÐºÑ Ð¾Ð³Ð¾Ð»Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ð·Ð° ÑÑнкÑÑÑми).ÐвеÑнÑÑÑ ÑвагÑ, Ñо пÑд ÑÐ°Ñ Ð·Ð¼Ñни викликÑв ÑÑнкÑÑй (з Ð±Ð»Ð¾ÐºÑ âCall Stackâ), поÑоÑÐ½Ñ Ð·Ð¼ÑÐ½Ð½Ñ Ñеж мÑнÑÑÑÑÑÑ. ТÑÑ Ñе Ñ ÐºÐ»ÑÑове Ñлово
this, поки Ñо не звеÑÑайÑе на нÑого Ñваги â ми вивÑимо його пÑзнÑÑе.
ÐÑдÑÑежÑÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ
ÐаÑÑав ÑÐ°Ñ Ð²ÑдÑÑежÑваÑи (trace) ÑкÑипÑ.
ÐÐ»Ñ ÑÑого Ñ Ð´ÐµÐºÑлÑка кнопок, ÑÐºÑ Ð·Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑÑ Ð½Ð° Ð¿Ð°Ð½ÐµÐ»Ñ Ð·Ð²ÐµÑÑ Ñ Ð¿ÑавоÑÑÑ. ÐавайÑе ÑÑ ÑозглÑнемо.
- ââââResumeâ: пÑодовжиÑи виконаннÑ. Швидка клавÑÑа: F8.
-
ÐÑдновлÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ. ЯкÑо бÑлÑÑе Ð½ÐµÐ¼Ð°Ñ ÑоÑок зÑпинок, налагоджÑÐ²Ð°Ñ Ð·Ð°Ð²ÐµÑÑиÑÑ ÑÐ²Ð¾Ñ ÑобоÑÑ, а код бÑде виконÑваÑиÑÑ Ð´Ð°Ð»Ñ.
ÐÑÑ Ñо ми побаÑимо, коли наÑиÑнемо на ÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ:
ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ð²ÑдновилоÑÑ, дÑйÑло до ÑнÑÐ¾Ñ ÑоÑки зÑпинки, вÑеÑединÑ
say()Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÑÐ²Ð°Ñ Ð·Ð½Ð¾Ð²Ñ (ÑимÑаÑово) зÑпинив виконаннÑ. ÐвеÑнÑÑÑ ÑÐ²Ð°Ð³Ñ Ð½Ð° Ð²ÐºÐ»Ð°Ð´ÐºÑ âCall Stackâ пÑавоÑÑÑ: в ÑпиÑÐºÑ Ð·âÑвивÑÑ Ñе один виклик. Ðи ÑÐµÐ¿ÐµÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑнкÑÑÑsay(). - ââââStepâ: виконаÑи наÑÑÑÐ¿Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ. Швидка клавÑÑа: F9.
-
ЯкÑо ми наÑиÑнемо на Ð½ÐµÑ â виконаÑÑÑÑÑ ÑÑнкÑÑÑ
alert.ÐаÑиÑкаÑÑи ÑÑ ÐºÐ½Ð¾Ð¿ÐºÑ Ñаз за Ñазом, вÑÑ Ð²Ð¸Ñази бÑдÑÑÑ Ð²Ð¸ÐºÐ¾Ð½ÑваÑиÑÑ Ð¿Ð¾ÐºÑоково.
- â âStep overâ: виконаÑи наÑÑÑÐ¿Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, не Ð·Ð°Ñ Ð¾Ð´ÑÑи в ÑÑнкÑÑÑ. Швидка клавÑÑа: F10.
-
ÐодÑбна до попеÑеднÑÐ¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ âStepâ, пÑоÑе пÑаÑÑÑ Ð´ÐµÑо по-ÑнÑомÑ, ÑкÑо наÑÑÑпний виÑаз â- виклик ÑÑнкÑÑÑ (не вбÑдована, Ñк
alert, а наÑа влаÑна ÑÑнкÑÑÑ).Ðоманда âStepâ зайде в ÑÑнкÑÑÑ Ñ Ð·ÑпиниÑÑÑÑ Ð½Ð° ÑÑ Ð¿ÐµÑÑÐ¾Ð¼Ñ ÑÑдкÑ, ÑÐ¾Ð´Ñ Ñк âStep overâ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ Ð²ÑÑ Ð²Ð¸Ñази, ÑÐºÑ Ñ Ð² ÑÑй ÑÑнкÑÑÑ (вклÑÑно з викликами Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ñ ÑÑнкÑÑй, ÑÐ°ÐºÑ Ñк
alert()).ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (ÑимÑаÑово) зÑпиниÑÑÑÑ Ð½Ð° наÑÑÑÐ¿Ð½Ð¾Ð¼Ñ ÑÑдкÑ, коли завеÑÑиÑÑÑÑ ÑÑнкÑÑÑ.
Це зÑÑÑно, коли ми не Ñ Ð¾Ñемо доÑлÑджÑваÑи, Ñо вÑдбÑваÑÑÑÑÑ Ð²ÑеÑÐµÐ´Ð¸Ð½Ñ ÑÑнкÑÑÑ.
- ââââStep intoâ: зÑобиÑи кÑок. Швидка клавÑÑа: F11.
-
ÐодÑбна до âStepâ, але пÑаÑÑÑ ÑнакÑе Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð²Ð¸ÐºÐ»Ð¸ÐºÑв аÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ð¸Ñ ÑÑнкÑÑй. ЯкÑо ви ÑÑлÑки поÑали вÑиÑи JavaScript, ÑÐ¾Ð´Ñ Ð¼Ð¾Ð¶ÐµÑе пÑоÑгноÑÑваÑи ÑÑ ÑÑзниÑÑ, ÑÐ¾Ð¼Ñ Ñо ми поки Ñо не вÑили аÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ð¸Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑв.
Ðа майбÑÑÐ½Ñ Ð¿ÑоÑÑо майÑе на ÑвазÑ, Ñо команда âStepâ ÑгноÑÑÑ Ð°ÑÐ¸Ð½Ñ ÑÐ¾Ð½Ð½Ñ Ð´ÑÑ, ÑÐ°ÐºÑ Ñк
setTimeout(вÑдкладений виклик ÑÑнкÑÑÑ), ÑÐºÑ Ð²Ð¸ÐºÐ¾Ð½ÑÑÑÑÑÑ Ð¿ÑзнÑÑе. Ðоманда âStep intoâ Ð·Ð°Ñ Ð¾Ð´Ð¸ÑÑ Ð² ÑÑ Ð½Ñй код, Ñ Ð¾ÑÑкÑÑ Ð½Ð° Ð½Ð¸Ñ ÑкÑо поÑÑÑбно. ÐожеÑе поглÑнÑÑи в докÑменÑаÑÑÑ DevTools, Ñоб побаÑиÑи Ñк Ñе вÑдбÑваÑÑÑÑÑ. - ââââStep outâ: пÑодовжиÑи Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ завеÑÑÐµÐ½Ð½Ñ Ð¿Ð¾ÑоÑÐ½Ð¾Ñ ÑÑнкÑÑÑ. Швидка клавÑÑа: Shift+F11.
-
ÐÐ¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ Ð²ÑдновиÑÑÑÑ Ñ (ÑимÑаÑово) зÑпиниÑиÑÑ Ð½Ð° оÑÑаннÑÐ¾Ð¼Ñ ÑÑÐ´ÐºÑ Ð¿Ð¾ÑоÑÐ½Ð¾Ñ ÑÑнкÑÑÑ. Це зÑÑÑно, коли ми випадково наÑиÑнÑли ÐºÐ½Ð¾Ð¿ÐºÑ , зайÑовÑи Ñ Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð¸Ð¹ виклик, Ñ Ñ Ð¾Ñемо ÑкнайÑвидÑе завеÑÑиÑи його.
- âââакÑивÑваÑи/деакÑивÑваÑи вÑÑ ÑоÑки зÑпинки.
-
Ð¦Ñ ÐºÐ½Ð¾Ð¿ÐºÐ° не Ð²Ð¿Ð»Ð¸Ð²Ð°Ñ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ, вона лиÑе дозволÑÑ Ð¼Ð°Ñово ÑвÑмкнÑÑи/вимкнÑÑи ÑоÑки зÑпинки.
-
Ðоли ÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ° акÑивна Ñ Ð²ÑдкÑиÑо ÑнÑÑÑÑменÑи ÑозÑобника, ÑÐ¾Ð´Ñ ÑкÑÐ¸Ð¿Ñ Ð°Ð²ÑомаÑиÑно (ÑимÑаÑово) зÑпиниÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ, ÑкÑо ÑÑапиÑÑÑÑ ÑкаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Ðи зможемо пÑоаналÑзÑваÑи змÑÐ½Ð½Ñ Ð¹ доÑлÑдиÑи, Ñо пÑÑло не Ñак. ÐÑже, ÑкÑо Ð½Ð°Ñ ÑкÑÐ¸Ð¿Ñ Ð°Ð²Ð°ÑÑйно завеÑÑÑÑ ÑобоÑÑ, ми можемо вÑдкÑиÑи ÑнÑÑÑÑменÑи ÑозÑобника, акÑивÑваÑи ÑÑ Ð¾Ð¿ÑÑÑ Ñ Ð¿ÐµÑезаванÑажиÑи ÑÑоÑÑнкÑ, Ñоб побаÑиÑи де Ñ Ð·Ð° ÑÐºÐ¸Ñ Ñмов ÑкÑÐ¸Ð¿Ñ âвмиÑаÑâ, Ñ ÑÐºÑ Ð² ÑÑого деÑалÑ.
ÐогÑваннÑ
Щоб вивеÑÑи ÑоÑÑ Ð² конÑÐ¾Ð»Ñ Ð· наÑого кодÑ, ÑÑнÑÑ ÑпеÑÑалÑна ÑÑнкÑÑÑ console.log.
ÐапÑиклад, Ñака ÑнÑÑÑÑкÑÑÑ Ð²Ð¸Ð²ÐµÐ´Ðµ в конÑÐ¾Ð»Ñ ÑиÑла вÑд 0 до 4:
// вÑдкÑийÑе конÑолÑ, Ñоб побаÑиÑи
for (let i = 0; i < 5; i++) {
console.log("ÑиÑло,", i);
}
ÐвиÑÐ°Ð¹Ð½Ñ ÐºÐ¾ÑиÑÑÑваÑÑ Ð½Ðµ баÑиÑимÑÑÑ ÑÑÑÑ ÑнÑоÑмаÑÑÑ â вона в конÑолÑ. Щоб побаÑиÑи ÑÑ, вÑдкÑийÑе ÑнÑÑÑÑменÑи ÑозÑобника Ñ Ð¿ÐµÑейдÑÑÑ Ð½Ð° Ð²ÐºÐ»Ð°Ð´ÐºÑ Â«Console», або наÑиÑнÑÑÑ ÐºÐ»Ð°Ð²ÑÑÑ Esc, ÑкÑо ви на ÑнÑÑй вкладÑÑ: Ñе вÑдкÑÐ¸Ñ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ Ð·Ð½Ð¸Ð·Ñ.
ЯкÑо в Ð½Ð°Ñ Ð´Ð¾ÑÑаÑнÑо логÑв в наÑÐ¾Ð¼Ñ ÐºÐ¾Ð´Ñ, ми зможемо побаÑиÑи Ñо вÑдбÑваÑÑÑÑÑ Ð· наÑими запиÑами, без допомоги налагоджÑваÑа.
ÐÑдÑÑмки
Як баÑимо, Ñ ÑÑи ÑпоÑоби (ÑимÑаÑово) зÑпиниÑи Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑкÑипÑÑ:
- ТоÑка зÑпинки.
- ÐнÑÑÑÑкÑÑÑ
debugger. - Ðомилка (ÑкÑо акÑивовано ÐºÐ½Ð¾Ð¿ÐºÑ Ð² ÑнÑÑÑÑменÑÐ°Ñ ÑозÑобника).
Ðоли Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (ÑимÑаÑово) зÑпинене, ми можемо налагоджÑваÑи (Ñнколи кажÑÑÑ âдебажиÑиâ) â- доÑлÑджÑваÑи змÑÐ½Ð½Ñ Ð¹ вÑдÑÑежÑваÑи Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð´Ñ, Ñоб побаÑиÑи, Ñо пÑÑло не Ñак.
Ð ÑнÑÑÑÑменÑÐ°Ñ ÑозÑобника набагаÑо бÑлÑÑе опÑÑй, нÑж ми ÑозглÑнÑли ÑÑÑ. ÐÑÑ ÑнÑоÑмаÑÑÑ Ð¿Ñо ÑнÑÑÑÑменÑи ÑозÑобника бÑаÑзеÑа Chrome можна пÑоÑиÑаÑи в ÑÑ Ð½Ñй оÑÑÑÑйнÑй докÑменÑаÑÑÑ (англÑйÑÑкоÑ).
ÐнÑоÑмаÑÑÑ Ð· ÑÑого ÑоздÑÐ»Ñ Ð´Ð¾ÑÑаÑнÑо, Ñоб поÑаÑи налагодженнÑ, пÑоÑе пÑзнÑÑе, оÑобливо ÑкÑо ви ÑÑÑно пÑаÑÑваÑимеÑе з бÑаÑзеÑом, не полÑнÑйÑеÑÑ Ð¿ÑоÑиÑаÑи пÑо ÑозÑиÑÐµÐ½Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ÑÑÑ ÑнÑÑÑÑменÑÑв ÑозÑобника.
Ð, Ñ Ñе ви можеÑе наÑиÑкаÑи на ÑÑÐ·Ð½Ñ Ð¼ÑÑÑÑ Ð² ÑнÑÑÑÑменÑÐ°Ñ ÑозÑобника, Ñ Ð¿Ð¾Ð±Ð°ÑиÑи Ñо вÑдбÑваÑÑÑÑÑ. Це, напевно, найÑвидÑий ÑпоÑÑб ознайомиÑиÑÑ Ð· ÑÑнкÑÑоналом ÑнÑÑÑÑменÑÑв ÑозÑобника. Ðе забÑвайÑе пÑо клаÑÐ°Ð½Ð½Ñ Ð¿ÑÐ°Ð²Ð¾Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ñ Ð¼Ð¸ÑÑ Ñа конÑекÑÑÐ½Ñ Ð¼ÐµÐ½Ñ!
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)