ããè¤éãªã³ã¼ããæ¸ãåã«ããããã°ã«ã¤ãã¦è©±ãã¾ãããã
ãããã®ã³ã°ã¯ã¹ã¯ãªããå ã®ã¨ã©ã¼ãè¦ã¤ããä¿®æ£ããããã»ã¹ã§ãããã¹ã¦ã®ã¢ãã³ãã©ã¦ã¶ã¨ä»ã®ç°å¢ã®ã»ã¨ãã©ã¯ãããã®ã³ã°ãã¼ã«ï¼ãããã°ãç°¡åã«è¡ããããã«ããéçºè ãã¼ã«ã®UIï¼ããµãã¼ããã¦ãã¾ããã¾ããã³ã¼ããã¹ãããæ¯ã«è¿½è·¡ãã¦æ£ç¢ºã«èµ·ãã¦ãããã¨ã確èªãããã¨ãã§ãã¾ãã
ããã§ã¯ãæãããã®è¦³ç¹ã§ã¯æãæ©è½ãå å®ãã¦ãã Chrome ã使ãã¾ãã
âsourcesâ ããã«
Chromeã®ãã¼ã¸ã§ã³ã«ãã£ã¦ã¯å°ãéã£ã¦è¦ããããããã¾ããããä½ããããã¯æç½ã§ãããã
- Chromeã® example page ãéãã¾ãã
- F12 (Mac: Cmd+Opt+I) ã§éçºè ãã¼ã«ãONã«ãã¾ãã
sourceããã«ã鏿ãã¾ãã
ãã®ç»é¢ãè¦ãã®ãåãã¦ã§ããã°ãè¦ã¦ããã¹ããã®ãããã¾ã:
ãã°ã«ãã¿ã³ ã¯ãã¡ã¤ã«ã表示ããã¿ããéãã¾ãã
ãããã¯ãªãã¯ãã¦ãindex.html ãæ¬¡ã«ããªã¼ãã¥ã¼ã® hello.js ã鏿ãã¾ããããããã§è¡¨ç¤ºãããå
å®¹ã¯æ¬¡ã®éãã§ã:
ããã§ã¯3ã¤ã®é åã確èªã§ãã¾ã:
- ãã¡ã¤ã«ããã²ã¼ã¿ ãã¤ã³ã«ã¯ãHTMLãJavaScriptãCSSãããã¼ã¸ã«ç´ä»ãã¦ããã¤ã¡ã¼ã¸ãªã©ãå«ããã¡ã¤ã«ããªã¹ãããã¾ããChromeã®æ¡å¼µæ©è½ãããã«è¡¨ç¤ºããããã¨ãããã¾ãã
- ã³ã¼ãã¨ãã£ã¿ ãã¤ã³ã¯ãã½ã¼ã¹ã³ã¼ãã表示ãã¾ãã
- JavaScript ãããã®ã³ã° ãã¤ã³ã¯ãããã°ã®ããã®ãã®ã§ããã®å¾è¦ã¦ããã¾ãã
åããã°ã« ãåã³ã¯ãªãã¯ãããã¨ããªã½ã¼ã¹ã®ä¸è¦§ãã³ã¼ããé ããã¨ãã§ãã¾ãã
ã³ã³ã½ã¼ã«
Esc ãæ¼ãã¨ã³ã³ã½ã¼ã«ãä¸ã«è¡¨ç¤ºããã¾ããããã§ã³ãã³ããå
¥åããEnter ãæ¼ãã¨ã³ãã³ããå®è¡ãããã¨ãã§ãã¾ãã
å®è¡çµæã¯ä¸ã«è¡¨ç¤ºããã¾ãã
ä¾ãã°ãããã§ã¯ 1+2 㯠3 ã«ãªããhello("debugger") ã¯ä½ãè¿ããªãã®ã§ãçµæã¯ undefined ã§ã:
ãã¬ã¤ã¯ãã¤ã³ã
example page ã®ã³ã¼ãã®ä¸ã§ä½ãèµ·ãã£ã¦ããã®ãè¦ã¦ã¿ã¾ããããhello.js ã§ãè¡çªå· 4 ãã¯ãªãã¯ãã¾ããã³ã¼ãã§ã¯ãªããå·¦å´ã«ããæ°åã® "4" ã§ãã
ããã§ãã¬ã¤ã¯ãã¤ã³ããã»ããã§ãã¾ãããè¡ 8 ã®æ°åãã¯ãªãã¯ãã¾ãããã
ãã®ããã«ãªãã¯ãã§ã(éã¯ããªããã¯ãªãã¯ããå ´æã§ã):
ãã¬ã¤ã¯ãã¤ã³ã ã¯ãããã¬ãèªåã§JavaScriptã®å®è¡ã忢ããã³ã¼ãã®ãã¤ã³ãã§ãã
ã³ã¼ãã忢ãã¦ããéãç¾å¨ã®å¤æ°ãæ¤æ»ããããã³ã³ã½ã¼ã«ã§ã³ãã³ããå®è¡ãããã¨ãã§ãã¾ããã¤ã¾ããããã§ãããã°ãã§ãã¾ãã
å³ã®ãã¤ã³ã§ã¯ã常ã«ãã¬ã¤ã¯ãã¤ã³ãã®ä¸è¦§ãè¦ããã¨ãã§ãã¾ããè²ã ãªãã¡ã¤ã«ã§å¤ãã®ãã¬ã¤ã¯ãã¤ã³ããè¨å®ãã¦ããã¨ãã«å½¹ã«ç«ã¡ã¾ãããããã¯æ¬¡ã®ãããªãã¨ãã§ãã¾ã:
- ã³ã¼ãä¸ã®ãã¬ã¤ã¯ãã¤ã³ãã«ç´ æ©ãç§»åãã(å³ãã¤ã³ã§ç§»åããããã¬ã¤ã¯ãã¤ã³ããã¯ãªãã¯)
- ãã§ãã¯ãå¤ããã¨ã§ã䏿çã«ãã¬ã¤ã¯ãã¤ã³ããç¡å¹ã«ãã
- å³ã¯ãªãã¯ããåé¤ã鏿ãããã¨ã§ããã¬ã¤ã¯ãã¤ã³ããåé¤ãã
- â¦ãªã©
è¡çªå·ã® å³ã¯ãªã㯠㧠æ¡ä»¶ä»ãã® ãã¬ã¤ã¯ãã¤ã³ããä½ããã¨ãã§ãã¾ããä¸ããããå¼ãçã®å ´åã«ã®ã¿ããªã¬ãã¾ãã
ããã¯å¤æ°ã®ç¹å®ã®å¤ããç¹å®ã®é¢æ°ãã©ã¡ã¼ã¿ã«å¯¾ãã¦ã®ã¿åæ¢ããå¿ è¦ãããå ´åã«ä¾¿å©ã§ãã
ãããã¬ã³ãã³ã
次ã®ããã«ãdebugger ã³ãã³ãã使ããã¨ã§ãã³ã¼ãã忢ãããã¨ãã§ãã¾ã:
function hello(name) {
let phrase = `Hello, ${name}!`;
debugger; // <-- ãããã¬ã¯ããã§æ¢ã¾ãã¾ã
say(phrase);
}
ããã¯ãã³ã¼ãã¨ãã£ã¿ã§ä½æ¥ä¸ããã©ã¦ã¶ã«åãæ¿ãã¦éçºè ãã¼ã«ãèµ·åãããã¬ã¤ã¯ãã¤ã³ããã»ããããããã«éçºè ãã¼ã«ã§ã¹ã¯ãªãããæ¢ããªã©ã¨ããæéããããããªãå ´åã«ã¨ã¦ã便å©ã§ãã
䏿忢ãã¦è¦åã
ä»åã®ä¾ã§ã¯ãhello() ã¯ãã¼ã¸èªã¿è¾¼ã¿ä¸ã«å¼ã³åºãããã®ã§ããããã¬ãèµ·åããæãç°¡åãªæ¹æ³ã¯ãã¼ã¸ãåèªã¿è¾¼ã¿ãããã¨ã§ãããªã®ã§ã F5 (Windows, Linux)ã¾ã㯠Cmd+R (Mac) ãæ¼ãã¾ãããã
ãã¬ã¤ã¯ãã¤ã³ããã»ããããã¦ããã®ã§ãå®è¡ã¯4è¡ç®ã§ä¸æåæ¢ãã¾ãã:
å³å´ã«ããæ å ±ã®ãããããã¦ã³ãéãã¦ãã ãã(ç¢å°ã®ã©ãã«ãã¤ãã¦ãã¾ã)ãç¾å¨ã®ã³ã¼ãã®ç¶æ ã調ã¹ããã¨ãã§ãã¾ã:
-
Watchâ ä»»æã®å¼ã®ç¾å¨ã®å¤ã表示ãã¾ãã+ãã¯ãªãã¯ããå¼ãå ¥åãããã¨ãã§ãã¾ãããããã¬ã¯ã常ã«ãã®å¤ã表示ããå®è¡ä¸ã«èªåçã«åè¨ç®ãè¡ãã¾ãã -
Call Stackâ ãã¹ããããå¼ã³åºãã®ãã§ã¼ã³ã表示ãã¾ããç¾æç¹ã§ã¯ããããã¬ã¯
hello()å¼ã³åºãã®å å´ã«ãããindex.htmlã®ã¹ã¯ãªãã(ããã«é¢æ°ã¯ãªãã®ã§ã âanonymousâ ã¨å¼ã°ãã¾ã)ã«ãã£ã¦å¼ã³åºããã¾ãããã¹ã¿ãã¯ã®é ç®ãã¯ãªãã¯ããã¨ããããã¬ã¯è©²å½ã®ã³ã¼ãã«ã¸ã£ã³ããããã¹ã¦ã®å¤æ°ãåæ§ã«èª¿ã¹ããã¾ãã
-
Scopeâ ç¾å¨ã®å¤æ°ãLocalã¯ãã¼ã«ã«é¢æ°ã®å¤æ°ã表示ãã¾ããã¾ããã½ã¼ã¹ä¸ã§ããã¤ã©ã¤ã表示ããããããã®å¤ãè¦ããã¨ãã§ãã¾ããGlobalã¯ã°ãã¼ãã«å¤æ°ãæã£ã¦ãã¾ãããã«ã¯æã ãã¾ã å¦ãã§ããªã
thisãã¼ã¯ã¼ããããã¾ãããããããå¦ã³ã¾ãã
å®è¡ã追跡ãã
ã¹ã¯ãªããã 追跡 ãã¦ã¿ã¾ãããã
å³ãã¤ã³ã®ä¸é¨ã«ãã®ãã¿ã³ãããã¾ãã
- â âåéâ: å®è¡ã®ç¶ç¶, ããããã¼ F8.
-
å®è¡ãåéãã¾ãããããä»ã«ãã¬ã¤ã¯ãã¤ã³ãããªããã°ããã®ã¾ã¾å®è¡ãç¶ç¶ããããããã¬ã®å¶å¾¡ããå¤ãã¾ãã
次ã®å³ã¯ããããè¡ã£ãå¾ã«è¦ããç»é¢ã§ã:
å®è¡ã¯åéããã
say()ã®ä¸ã®å¥ã®ãã¬ã¤ã¯ãã¤ã³ãã«å°éããããã§ä¸æåæ¢ãã¾ããå³ã® âCall stackâ ãè¦ã¦ãã ãããããä¸åº¦å¼ã³åºããã¨ã§å¢ãã¦ãã¾ããç§ãã¡ã¯ãä»say()ã®ä¸ã«ãã¾ãã - â âã¹ãããâ: 次ã®ã³ãã³ããå®è¡ãã¾ã, ããããã¼ F9.
-
æ¬¡ã®æãå®è¡ãã¾ããã¯ãªãã¯ããã¨ã
alertã表示ããã¾ãããããä½åº¦ãã¯ãªãã¯ãããã¨ã§ã1ã¤ãã¤ã¹ã¯ãªããæãå®è¡ããã¾ãã
- â âã¹ããããªã¼ãã¼â: 次ã®ã³ãã³ããå®è¡ãã¾ããã颿°ã®ä¸ã«ã¯å ¥ãã¾ãã, ããããã¼ F10ã
-
ä¸ã® âã¹ãããâ ã³ãã³ãã¨åãã§ãããæ¬¡ã®æã颿°å¼ã³åºãã®å ´åã«æ¯ãèããç°ãªãã¾ããã¤ã¾ãã
alertã®ãããªçµã¿è¾¼ã¿ã§ã¯ãªããæã èªèº«ã使ãã颿°ã§ããâã¹ãããâ ã³ãã³ãã¯ãã®ä¸ã«å ¥ãããã®æåã®è¡ã§å®è¡ã䏿忢ãã¾ãã䏿¹ âã¹ããããªã¼ãã¼â ã¯ãã¹ãããã颿°å¼ã³åºããç®ã«è¦ããªãç¶æ ã§å®è¡ãã颿°ã®å é¨ãã¹ããããã¾ãã
ãã®å¾ããã®é¢æ°ã®ç´å¾ã§å®è¡ã䏿忢ããã¾ãã
ããã¯ã颿°å¼ã³åºãã®å é¨ã§èµ·ãã¦ãããã¨ã«èå³ããªãå ´åã«ä¾¿å©ã§ãã
- â âã¹ãããã¤ã³â, ããããã¼ F11.
-
âã¹ãããâ ã¨åãã§ãããéåæé¢æ°å¼ã³åºãã§æ¯ãèããç°ãªãã¾ãããã JavaScript ãå¦ã³å§ããã°ããã§ããã°ãã¾ã éåæå¼ã³åºãã¯åãæ±ã£ã¦ãªãã®ã§ãã®éãã¯ç¡è¦ãã¦ãã ããã
å°æ¥çã«ã¯ãâã¹ãããâ ã³ãã³ãã¯ãå¾ã§å®è¡ããã
setTimeout(ã¹ã±ã¸ã¥ã¼ãªã³ã°ããã颿°å¼ã³åºã) ã®ãããªéåæã¢ã¯ã·ã§ã³ãç¡è¦ãããã¨ã«æ³¨æãã¦ãã ãããâã¹ãããã¤ã³â ã¯ãããã®ã³ã¼ãã«å ¥ããå¿ è¦ã«å¿ãã¦ããããå¾ ã¡ã¾ãã詳細ã«ã¤ãã¦ã¯éçºè ããã¥ã¢ã« ãåç §ãã¦ãã ããã - â âã¹ãããã¢ã¦ãâ: ç¾å¨ã®é¢æ°ã®æå¾ã¾ã§å®è¡ãç¶ç¶ãã¾ããããããã¼ Shift+F11ã
-
å®è¡ã¯ç¾å¨ã®é¢æ°ã®æå¾ã®è¡ã§åæ¢ãã¾ãããã㯠ã使ã£ã¦ãã¹ããããå¼ã³åºãã«èª¤ã£ã¦å ¥ã£ã¦ãã¾ããæ©ã颿°ã®çµããã¾ã§é²ãããå ´åã«ä¾¿å©ã§ãã
- â ãã¹ã¦ã®ãã¬ã¤ã¯ãã¤ã³ãã®æå¹/ç¡å¹
-
ãã®ãã¿ã³ã¯åã«ãã¬ã¤ã¯ãã¤ã³ãã® on/off ãåãæ¿ãããã®ã§ãå®è¡ã®ç¶æ ã¯å¤ããã¾ããã
- â ã¨ã©ã¼çºçæã®èªåä¸æåæ¢ã®æå¹/ç¡å¹
-
æå¹ã«ãã¦éçºè ãã¼ã«ãéãã¦ããå ´åãã¹ã¯ãªããã¨ã©ã¼ãèµ·ããã¨å®è¡ãèªåã§ä¸æåæ¢ãã¾ããããã¦ãä½ãééã£ã¦ããããç¥ãããã«å¤æ°ãåæãããã¨ãã§ãã¾ãããªã®ã§ãã¹ã¯ãªãããã¨ã©ã¼ã§æ»ãã å ´åã¯ãã©ãã§æ»ãã§ãã®æã©ããªã³ã³ããã¹ãã§ãããã確èªããããããããã¬ãèµ·åããã®ãªãã·ã§ã³ãæå¹ã«ãã¦ãã¼ã¸ãåèªè¾¼ãã¾ãããã
ã³ã¼ãã®è¡ã§å³ã¯ãªãã¯ããã¨ãâContinue to hereâ ã¨å¼ã°ããç´ æ´ããã鏿è¢ãæã¤ã³ã³ããã¹ãã¡ãã¥ã¼ãéãã¾ãã
ããã¯è¤æ°ã®ã¹ããããé²ããããããã¬ã¤ã¯ãã¤ã³ããã»ããããã®ãé¢åãªã¨ãã«ä¾¿å©ã§ãã
ãã®ã³ã°
ã³ã³ã½ã¼ã«ã«ä½ããåºåããããã« console.log 颿°ãããã¾ãã
ä¾ãã°ãããã¯ã³ã³ã½ã¼ã«ã« 0 ãã 4 ã¾ã§ã®å¤ãåºåãã¾ã:
// è¦ãã«ã¯ã³ã³ã½ã¼ã«ãéãã¦ãã ãã
for (let i = 0; i < 5; i++) {
console.log("value", i);
}
ã³ã³ã½ã¼ã«ã®ä¸ãªã®ã§ãé常ã®ã¦ã¼ã¶ã¯ãã®åºåãè¦ããã¨ã¯ããã¾ãããè¦ãããã«ã¯ãéçºè ãã¼ã«ã®ã³ã³ã½ã¼ã«ã¿ããéãããéçºè ãã¼ã«ã®å¥ã®ã¿ãã§ Esc ãæ¼ãã¾ãã :ä¸ã«ã³ã³ã½ã¼ã«ã表示ããã¾ãã
ã³ã¼ãã«ååãªãã°ãä»è¾¼ãã§ããã°ããããã¬ãªãã§ä½ãè¡ããã¦ãããç¥ããã¨ãã§ãã¾ãã
ãµããª
ããã¾ã§è¦ã¦ããéããã¹ã¯ãªããã䏿忢ããã«ã¯ä¸»ã«3ã¤ã®æ¹æ³ãããã¾ãã
- ãã¬ã¤ã¯ãã¤ã³ã
debuggeræ- ã¨ã©ã¼ (éçºè ãã¼ã«ãéãããã¿ã³ ã ON ã«ãã¦ããå ´å)
ãããã«ãã夿°ãæ¤æ»ãå®è¡ãééã£ã¦ããå ´æã確èªãããã¨ãã§ãã¾ãã
ããã§èª¬æãã以ä¸ã«ãéçºè ãã¼ã«ã«ã¯å¤ãã®ãªãã·ã§ã³ãããã¾ããå®å ¨ãªããã¥ã¢ã«ã¯ https://developers.google.com/web/tools/chrome-devtoolsã§ãã
ãã®ãã£ãã¿ã¼ã®æ å ±ã¯ãããã°ãå§ããã«ã¯ååã§ãããä»å¾ãç¹ã«ãã©ã¦ã¶ã®ä½æ¥ãå¤ãå ´åã¯ãä¸è¨ã®ãµã¤ããè¦ã¦éçºè ãã¼ã«ã®ããé«åº¦ãªæ©è½ã調ã¹ã¦ãã ããã
ã¾ããéçºè ãã¼ã«ã®è²ããªå ´æãã¯ãªãã¯ãããã¨ã§ä½ã表示ãããããè¦ããã¨ãåºæ¥ã¾ããæããããã¯éçºè ãã¼ã«ãå¦ã¶ã®ã«æãè¿éã§ããåæ§ã«å³ã¯ãªãã¯ãå¿ããªãããã«!
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã