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