๐Ÿ” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…: ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ๐Ÿž

์ฝ˜ํ…์ธ  ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ - ๐Ÿ” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…: ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ๐Ÿž

 

 

์•ˆ๋…•ํ•˜์„ธ์š”, ์ฝ”๋”ฉ ๊ฟˆ๋‚˜๋ฌด๋“ค! ์˜ค๋Š˜์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋””๋ฒ„๊น…์˜ ์„ธ๊ณ„๋กœ ์—ฌ๋Ÿฌ๋ถ„์„ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰ "์–ด๋จธ, ๋””๋ฒ„๊น…์ด๋ผ๋‹ˆ... ๊ทธ๊ฒŒ ๋ญ์•ผ?" ํ•˜๊ณ  ๊ณ ๊ฐœ๋ฅผ ๊ฐธ์šฐ๋šฑ๊ฑฐ๋ฆฌ๋Š” ๋ถ„๋“ค๋„ ๊ณ„์‹ค ํ…๋ฐ์š”. ๊ฑฑ์ • ๋งˆ์„ธ์š”! ์šฐ๋ฆฌ ํ•จ๊ป˜ ์ฐจ๊ทผ์ฐจ๊ทผ ์•Œ์•„๊ฐ€ ๋ณด์•„์š”. ์ž, ์ด์ œ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์š”? ๐Ÿš€

๐Ÿ’ก Tip: ๋””๋ฒ„๊น…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฒ„๊ทธ(์˜ค๋ฅ˜)๋ฅผ ์ฐพ์•„ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์ด์—์š”. ๋งˆ์น˜ ํƒ์ •์ด ๋˜์–ด ์ฝ”๋“œ ์† ๋ฒ”์ธ์„ ์ฐพ์•„๋‚ด๋Š” ๊ฑฐ์ฃ ! ์žฌ๋ฐŒ์ง€ ์•Š๋‚˜์š”?

1. ์ฝ˜์†”: ๊ฐœ๋ฐœ์ž์˜ ๋น„๋ฐ€ ๋ฌด๊ธฐ ๐Ÿ•ต๏ธโ€โ™‚๏ธ

์ž, ์—ฌ๋Ÿฌ๋ถ„! ์ฝ˜์†”์ด๋ผ๊ณ  ๋“ค์–ด๋ณด์…จ๋‚˜์š”? "์‘, ๊ฒŒ์ž„๊ธฐ ๋งํ•˜๋Š” ๊ฑฐ ์•„๋ƒ?" ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹  ๋ถ„๋“ค, ์•„์‰ฝ๊ฒŒ๋„ ์˜ค๋Š˜ ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•  ์ฝ˜์†”์€ ์กฐ๊ธˆ ๋‹ค๋ฅธ ์นœ๊ตฌ์˜ˆ์š”. ๋ฐ”๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์— ์žˆ๋Š” ์ฝ˜์†”์„ ๋งํ•˜๋Š” ๊ฑฐ์ฃ !

์ฝ˜์†”์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋น„๋ฐ€ ๋ฌด๊ธฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ๋ฐ”๋กœ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . ๋งˆ์น˜ ์š”๋ฆฌ์‚ฌ๊ฐ€ ์Œ์‹์˜ ๋ง›์„ ๋ณด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ๊ฐœ๋ฐœ์ž๋Š” ์ฝ˜์†”์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ '๋ง›'์„ ๋ด…๋‹ˆ๋‹ค. ๐Ÿณ

1.1 ์ฝ˜์†” ์—ด์–ด๋ณด๊ธฐ

์ž, ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์ด ์‹ ๋น„ํ•œ ์ฝ˜์†”์„ ์—ด ์ˆ˜ ์žˆ์„๊นŒ์š”?

  • Chrome์ด๋‚˜ Firefox ๊ฐ™์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ F12 ํ‚ค๋ฅผ ๋ˆ„๋ฅด์„ธ์š”.
  • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๊ฐ€ ๋™‡! ํ•˜๊ณ  ๋‚˜ํƒ€๋‚  ๊ฑฐ์˜ˆ์š”.
  • ๊ฑฐ๊ธฐ์„œ 'Console' ํƒญ์„ ํด๋ฆญํ•˜๋ฉด... ์งœ์ž”! ๐ŸŽ‰ ์ฝ˜์†”์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์™€์šฐ! ์ด์ œ ์—ฌ๋Ÿฌ๋ถ„๋„ ๊ฐœ๋ฐœ์ž์˜ ๋น„๋ฐ€ ๋ฌด๊ธฐ๋ฅผ ์†์— ๋„ฃ์—ˆ์–ด์š”. ์–ด๋•Œ์š”? ๋ญ”๊ฐ€ ํ•ด์ปค๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์€ ๊ธฐ๋ถ„์ด ๋“ค์ง€ ์•Š๋‚˜์š”? ใ…‹ใ…‹ใ…‹

1.2 ์ฝ˜์†”๋กœ ๋†€์•„๋ณด๊ธฐ

์ž, ์ด์ œ ์ฝ˜์†”๋กœ ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ๋“ค์„ ํ•ด๋ณผ๊นŒ์š”?

console.log("์•ˆ๋…•ํ•˜์„ธ์š”, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ!");
console.log(2 + 2);
console.log(["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์˜ค๋ Œ์ง€"]);

์ด๋ ‡๊ฒŒ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐ๋ฅผ ๋ˆ„๋ฅด๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

์งœ์ž”! ์ฝ˜์†”์— ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์ฃ ? ์ด๊ฒŒ ๋ฐ”๋กœ console.log()์˜ ๋งˆ๋ฒ•์ด์—์š”. ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์—‡์„ ์ž…๋ ฅํ•˜๋“  ์ฝ˜์†”์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฑฐ์ฃ .

"์–ด? ๊ทผ๋ฐ ์ด๊ฒŒ ๋””๋ฒ„๊น…์ด๋ž‘ ๋ฌด์Šจ ์ƒ๊ด€์ด์•ผ?" ๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ค ์ˆ˜ ์žˆ์–ด์š”. ์ž ๊น๋งŒ์š”! ์ด์ œ๋ถ€ํ„ฐ๊ฐ€ ์ง„์งœ ์‹œ์ž‘์ด์—์š”!

1.3 ์ฝ˜์†”๋กœ ๋””๋ฒ„๊น…ํ•˜๊ธฐ

์ž, ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋””๋ฒ„๊น…์„ ํ•ด๋ณผ๊นŒ์š”? ๋จผ์ € ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด๋ณผ๊ฒŒ์š”.

function addNumbers(a, b) {
  let result = a + b;
  console.log("๊ฒฐ๊ณผ๋Š”:", result);
  return result;
}

addNumbers(5, 3);

์ด ์ฝ”๋“œ๋ฅผ ์ฝ˜์†”์— ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‚˜์š”?

"๊ฒฐ๊ณผ๋Š”: 8"์ด ์ฝ˜์†”์— ์ฐํ˜”์„ ๊ฑฐ์˜ˆ์š”. ์ด๋ ‡๊ฒŒ console.log()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

์ด๊ฒŒ ๋ฐ”๋กœ ๋””๋ฒ„๊น…์˜ ์ฒซ ๊ฑธ์Œ์ด์—์š”! ์šฐ๋ฆฌ๋Š” ๋ฐฉ๊ธˆ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ƒํƒœ๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ด์„œ ํ™•์ธํ–ˆ๊ฑฐ๋“ ์š”. ๐Ÿ‘€

๐ŸŽˆ Fun Fact: console.log()๋Š” ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋„ˆ๋ฌด ์ž์ฃผ ์‚ฌ์šฉ๋ผ์„œ "์ฝ˜์†”๋กœ๊ทธ ์ค‘๋…"์ด๋ผ๋Š” ๋ง๊นŒ์ง€ ์žˆ๋Œ€์š”. ใ…‹ใ…‹ใ…‹ ์—ฌ๋Ÿฌ๋ถ„๋„ ๊ณง ์ด ์ค‘๋…์— ๋น ์งˆ์ง€๋„ ๋ชฐ๋ผ์š”!

1.4 ์ฝ˜์†”์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค

console.log()๋งŒ ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ์—์š”. ์ฝ˜์†”์—๋Š” ๋” ๋งŽ์€ ์นœ๊ตฌ๋“ค์ด ์žˆ๋‹ต๋‹ˆ๋‹ค!

  • console.warn(): ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ด์š”. ๋…ธ๋ž€์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜์ฃ .
  • console.error(): ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•ด์š”. ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ผ์š”.
  • console.table(): ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ๋ณด์—ฌ์ค˜์š”.

ํ•œ๋ฒˆ ์ด๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•ด๋ณผ๊นŒ์š”?

console.warn("์ด๊ฑด ๊ฒฝ๊ณ ์—์š”!");
console.error("์ด๋Ÿฐ, ์—๋Ÿฌ๊ฐ€ ๋‚ฌ์–ด์š”!");
console.table(["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์˜ค๋ Œ์ง€"]);

์™€! ์ฝ˜์†”์ด ์ปฌ๋Ÿฌํ’€ํ•ด์กŒ์ฃ ? ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ํ™”๋ คํ•œ ๋ถˆ๊ฝƒ๋†€์ด ๊ฐ™์•„์š”! ๐ŸŽ†

2. ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ: ์ฝ”๋“œ์˜ ํƒ€์ž„๋จธ์‹  โฐ

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ๋‘ ๋ฒˆ์งธ ๋ฌด๊ธฐ, ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ ์‹œ๊ฐ„์ด์—์š”! "๋ธŒ๋ ˆ์ดํฌ... ๋ญ๋ผ๊ณ ์š”?" ๋„ค, ๋งž์•„์š”. ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ! ์ด๋ฆ„๋ถ€ํ„ฐ ๋ญ”๊ฐ€ ๋Œ€๋‹จํ•ด ๋ณด์ด์ฃ ?

๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ '๋ฉˆ์ถ”๋Š”' ์ง€์ ์ด์—์š”. ๋งˆ์น˜ ์˜ํ™”์—์„œ ์ผ์‹œ์ •์ง€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”!

2.1 ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์„ค์ •ํ•˜๊ธฐ

๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ•ด์š”:

  1. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค (๊ธฐ์–ต๋‚˜์ฃ ? F12 ํ‚ค!)
  2. 'Sources' ํƒญ์„ ํด๋ฆญํ•ด์š”.
  3. ๋””๋ฒ„๊น…ํ•˜๊ณ  ์‹ถ์€ JavaScript ํŒŒ์ผ์„ ์ฐพ์•„์š”.
  4. ์ฝ”๋“œ ๋ผ์ธ ๋ฒˆํ˜ธ๋ฅผ ํด๋ฆญํ•˜๋ฉด... ์งœ์ž”! ํŒŒ๋ž€์ƒ‰ ํ™”์‚ดํ‘œ๊ฐ€ ์ƒ๊ฒจ์š”. ์ด๊ฒŒ ๋ฐ”๋กœ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์˜ˆ์š”!

"์–ด? ๊ทผ๋ฐ ๋‚ด ์ฝ”๋“œ๋Š” ์–ด๋”” ์žˆ๋Š” ๊ฑฐ์•ผ?" ํ•˜๊ณ  ๋‹นํ™ฉํ•˜์‹  ๋ถ„๋“ค! ๊ฑฑ์ • ๋งˆ์„ธ์š”. ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณผ๊ฒŒ์š”.

2.2 ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์‹ค์Šต

์ž, ์ด์ œ ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ด๋ณผ๊นŒ์š”?

function calculateSum(a, b) {
  let sum = a + b;
  let double = sum * 2;
  let square = double * double;
  return square;
}

let result = calculateSum(3, 4);
console.log(result);

์ด ์ฝ”๋“œ๋ฅผ ์ฝ˜์†”์— ์ž…๋ ฅํ•˜๊ณ , 'Sources' ํƒญ์—์„œ ์ฐพ์•„๋ณด์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  let sum = a + b; ๋ผ์ธ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ฐ์–ด๋ณด์„ธ์š”.

์ด์ œ ์ฝ˜์†”์—์„œ calculateSum(3, 4);๋ฅผ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ฌ๋‚˜์š”?

์™€์šฐ! ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ๋ฉˆ์ท„์–ด์š”! ๋งˆ์น˜ ํƒ€์ž„๋จธ์‹ ์„ ํƒ€๊ณ  ์ฝ”๋“œ์˜ ํ•œ ์ˆœ๊ฐ„์— ๋ฉˆ์ถฐ์„  ๊ฒƒ ๊ฐ™์ง€ ์•Š๋‚˜์š”?

2.3 ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ํ™œ์šฉํ•˜๊ธฐ

๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์—์„œ ๋ฉˆ์ท„์„ ๋•Œ, ์šฐ๋ฆฌ๋Š” ์ •๋ง ๋งŽ์€ ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”:

  • ๋ณ€์ˆ˜์˜ ํ˜„์žฌ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์š” (Step Over ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•ด์„œ์š”).
  • ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ€๋ณผ ์ˆ˜๋„ ์žˆ์–ด์š” (Step Into ๋ฒ„ํŠผ์œผ๋กœ์š”).

"์™€, ์ด๊ฑฐ ์™„์ „ ๋งคํŠธ๋ฆญ์Šค ๊ฐ™์€๋ฐ?" ๋งž์•„์š”! ์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ์ฝ”๋“œ์˜ ๋งคํŠธ๋ฆญ์Šค ์†์œผ๋กœ ๋“ค์–ด์˜จ ๊ฑฐ์˜ˆ์š”. ๐Ÿ˜Ž

๐Ÿ’ก Pro Tip: ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด, ๋ณต์žกํ•œ ๋ฒ„๊ทธ๋„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”. ๋งˆ์น˜ ํƒ์ •์ด ๋ฒ”์ธ์˜ ๋™์„ ์„ ๋”ฐ๋ผ๊ฐ€๋“ฏ์ด, ์ฝ”๋“œ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๊ฑฐ๋“ ์š”!

3. ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์˜ ํ™˜์ƒ์˜ ์ฝค๋น„ ํ”Œ๋ ˆ์ด ๐Ÿค

์ž, ์ด์ œ ์šฐ๋ฆฌ์˜ ๋‘ ์ฃผ์ธ๊ณต์ธ ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด๋ณผ ์‹œ๊ฐ„์ด์—์š”! ์ด ๋‘˜์„ ํ•ฉ์น˜๋ฉด ์ •๋ง ํ™˜์ƒ์ ์ธ ๋””๋ฒ„๊น… ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

3.1 ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ํ•จ๊ป˜ ์“ฐ๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณผ๊นŒ์š”?

function mysteriousCalculation(x, y) {
  let a = x * 2;
  let b = y + 5;
  let c = a + b;
  let d = c * c;
  return d;
}

let result = mysteriousCalculation(10, 20);
console.log(result);

์ด ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ์ฝ˜์†”๊ณผ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์š”!

  1. ๋จผ์ €, let a = x * 2; ๋ผ์ธ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ฐ์–ด๋ณด์„ธ์š”.
  2. ๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค console.log()๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณผ๊ฒŒ์š”.
function mysteriousCalculation(x, y) {
  let a = x * 2;
  console.log("a์˜ ๊ฐ’:", a);
  let b = y + 5;
  console.log("b์˜ ๊ฐ’:", b);
  let c = a + b;
  console.log("c์˜ ๊ฐ’:", c);
  let d = c * c;
  console.log("d์˜ ๊ฐ’:", d);
  return d;
}

let result = mysteriousCalculation(10, 20);
console.log("์ตœ์ข… ๊ฒฐ๊ณผ:", result);

์ด์ œ ์ด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์—์„œ ๋ฉˆ์ถ”๋ฉด, Step Over ๋ฒ„ํŠผ์„ ์‚ฌ์šฉํ•ด ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.

์™€! ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์ฝ˜์†”์— ๊ฐ’์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•จ์ˆ˜์˜ ๋™์ž‘์„ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

3.2 ์‹ค์ „ ๋””๋ฒ„๊น…: ๋ฒ„๊ทธ ์‚ฌ๋ƒฅ ๋Œ€์ž‘์ „! ๐Ÿ›๐Ÿ”

์ž, ์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ๋ฐฐ์šด ๊ฑธ ํ™œ์šฉํ•ด์„œ ์ง„์งœ ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋ณผ๊นŒ์š”? ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ด์š”.

function calculateDiscount(price, discountRate) {
  let discount = price * (discountRate / 100);
  let discountedPrice = price - discount;
  return discountedPrice;
}

let originalPrice = 1000;
let discountRate = 20;
let finalPrice = calculateDiscount(originalPrice, discountRate);
console.log("ํ• ์ธ๋œ ๊ฐ€๊ฒฉ:", finalPrice);

// ์–ด๋ผ? ์™œ ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์ด ์ด์ƒํ•˜์ง€?

์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ญ”๊ฐ€ ์ด์ƒํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์š”. ์šฐ๋ฆฌ์˜ ํƒ์ • ๋ณธ๋Šฅ์„ ๋ฐœํœ˜ํ•ด์„œ ์ด ๋ฒ„๊ทธ๋ฅผ ์žก์•„๋ณผ๊นŒ์š”?

  1. let discount = price * (discountRate / 100); ๋ผ์ธ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ฐ์–ด์š”.
  2. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , Step Over ๋ฒ„ํŠผ์œผ๋กœ ํ•œ ์ค„์”ฉ ์ง„ํ–‰ํ•ด๋ณด์„ธ์š”.
  3. ๊ฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด์„ธ์š”.

์–ด๋–ค๊ฐ€์š”? ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•˜๋‚˜์š”?

์•„ํ•˜! discountRate๋ฅผ 100์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๋ถ€๋ถ„์ด ๋ฌธ์ œ์˜€์–ด์š”. 20%๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด 0.2๋ฅผ ๊ณฑํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” 0.2 ๋Œ€์‹  20์„ ๊ณฑํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฑฐ์ฃ !

์ž, ์ด์ œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋ณผ๊นŒ์š”?

function calculateDiscount(price, discountRate) {
  let discount = price * (discountRate / 100);  // ์—ฌ๊ธฐ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์–ด์š”!
  let discountedPrice = price - discount;
  return discountedPrice;
}

let originalPrice = 1000;
let discountRate = 20;
let finalPrice = calculateDiscount(originalPrice, discountRate);
console.log("ํ• ์ธ๋œ ๊ฐ€๊ฒฉ:", finalPrice);

์ด์ œ ๋‹ค์‹œ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ์™€! ์ œ๋Œ€๋กœ ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”์ฃ ? ์šฐ๋ฆฌ๋Š” ๋ฐฉ๊ธˆ ์ง„์งœ ๋ฒ„๊ทธ๋ฅผ ์žก์•˜์–ด์š”! ๐ŸŽ‰

๐Ÿ† Achievement Unlocked: ์ถ•ํ•˜ํ•ด์š”! ์—ฌ๋Ÿฌ๋ถ„์€ ์ด์ œ ๊ณต์‹ '๋ฒ„๊ทธ ํ—Œํ„ฐ'๊ฐ€ ๋˜์—ˆ์–ด์š”. ์ด ํŠน๋ณ„ํ•œ ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด, ์–ด๋–ค ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!

4. ๊ณ ๊ธ‰ ๋””๋ฒ„๊น… ๊ธฐ์ˆ : ํ”„๋กœ์˜ ์„ธ๊ณ„๋กœ! ๐Ÿš€

์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋””๋ฒ„๊น… ๊ธฐ์ˆ ์„ ๋งˆ์Šคํ„ฐํ–ˆ์–ด์š”. ํ•˜์ง€๋งŒ ์•„์ง ๋” ๊นŠ์€ ์„ธ๊ณ„๊ฐ€ ๋‚จ์•„์žˆ๋‹ต๋‹ˆ๋‹ค! ๊ณ ๊ธ‰ ๋””๋ฒ„๊น… ๊ธฐ์ˆ ๋กœ ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€๋ณผ๊นŒ์š”?

4.1 ์กฐ๊ฑด๋ถ€ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ

"์–ด? ์กฐ๊ฑด๋ถ€ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ผ๊ณ ์š”?" ๋„ค, ๋งž์•„์š”! ํŠน์ • ์กฐ๊ฑด์—์„œ๋งŒ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์˜ˆ์š”. ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ํšจ์œจ์ ์œผ๋กœ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณผ๊ฒŒ์š”:

function processArray(arr) {
  for(let i = 0; i < arr.length; i++) {
    let result = arr[i] * 2;
    console.log(result);
  }
}

let myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
processArray(myArray);

๋งŒ์•ฝ result๊ฐ€ 10๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋งŒ ๋ฉˆ์ถ”๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”? ๋ฐ”๋กœ ์กฐ๊ฑด๋ถ€ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์š”!

  1. let result = arr[i] * 2; ๋ผ์ธ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ด์š”.
  2. ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์šฐํด๋ฆญํ•˜๊ณ  'Edit breakpoint'๋ฅผ ์„ ํƒํ•ด์š”.
  3. ์กฐ๊ฑด์œผ๋กœ result > 10์„ ์ž…๋ ฅํ•ด์š”.

์ด์ œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ์™€! result๊ฐ€ 10๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋งŒ ๋ฉˆ์ถ”๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ํŠน์ • ์ƒํ™ฉ์—์„œ๋งŒ ์ฝ”๋“œ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ •๋ง ํŽธ๋ฆฌํ•˜์ฃ ?

4.2 Watch ํ‘œํ˜„์‹

Watch ํ‘œํ˜„์‹์€ ๋˜ ๋‹ค๋ฅธ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์˜ˆ์š”. ์ฝ”๋“œ ์‹คํ–‰ ์ค‘์— ํŠน์ • ํ‘œํ˜„์‹์˜ ๊ฐ’์„ ๊ณ„์† ์ง€์ผœ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ processArray ํ•จ์ˆ˜์—์„œ i์™€ result์˜ ๊ฐ’์„ ๊ณ„์† ๊ด€์ฐฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด:

  1. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ 'Watch' ์„น์…˜์„ ์ฐพ์•„์š”.
  2. '+'๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  'i'๋ฅผ ์ž…๋ ฅํ•ด์š”.
  3. ๋‹ค์‹œ '+'๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  'result'๋ฅผ ์ž…๋ ฅํ•ด์š”.

์ด์ œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด์„œ ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์— ๊ฑธ๋ฆด ๋•Œ๋งˆ๋‹ค ์ด ๊ฐ’๋“ค์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”!

๐Ÿง™โ€โ™‚๏ธ Wizard Tip: Watch ํ‘œํ˜„์‹์€ ๋‹จ์ˆœํ•œ ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ณต์žกํ•œ ํ‘œํ˜„์‹๋„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ๋ฅผ ๋“ค์–ด, i * result๊ฐ™์€ ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ต๋‹ˆ๋‹ค!

4.3 Call Stack ์ดํ•ดํ•˜๊ธฐ

Call Stack์€ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋“ค์˜ ์ˆœ์„œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋„๊ตฌ์˜ˆ์š”. ๋งˆ์น˜ ํ•จ์ˆ˜๋“ค์˜ ์กฑ๋ณด ๊ฐ™์€ ๊ฑฐ์ฃ !

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ณผ๊นŒ์š”?

function grandparent() {
  console.log("๋‚˜๋Š” ํ• ์•„๋ฒ„์ง€!");
  parent();
}

function parent() {
  console.log("๋‚˜๋Š” ๋ถ€๋ชจ!");
  child();
}

function child() {
  console.log("๋‚˜๋Š” ์ž์‹!");
  console.log("์—ฌ๊ธฐ์„œ ๋ญ”๊ฐ€ ์ด์ƒํ•œ๋ฐ...");
}

grandparent();

child ํ•จ์ˆ˜ ์•ˆ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ฐ๊ณ  ์‹คํ–‰ํ•ด๋ณด์„ธ์š”. ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ 'Call Stack' ์„น์…˜์„ ๋ณด์„ธ์š”.

์™€! ํ•จ์ˆ˜๋“ค์ด ํ˜ธ์ถœ๋œ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด "์–ด๋–ค ๊ฒฝ๋กœ๋กœ ์ด ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ๋Š”์ง€" ํ•œ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

4.4 ๋น„๋™๊ธฐ ์ฝ”๋“œ ๋””๋ฒ„๊น…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์€ ์กฐ๊ธˆ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ๊ฑฑ์ • ๋งˆ์„ธ์š”! ์šฐ๋ฆฌ์—๊ฒ ๋น„๋ฒ•์ด ์žˆ๋‹ต๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋น„๋™๊ธฐ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณผ๊ฒŒ์š”:

function fetchData() {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve("๋ฐ์ดํ„ฐ ๋„์ฐฉ!");
    }, 2000);
  });
}

async function processData() {
  console.log("๋ฐ์ดํ„ฐ ์š”์ฒญ ์‹œ์ž‘...");
  let data = await fetchData();
  console.log("๋ฐ›์€ ๋ฐ์ดํ„ฐ:", data);
}

processData();

์ด๋Ÿฐ ๋น„๋™๊ธฐ ์ฝ”๋“œ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ๋Š” 'Async' ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ข‹์•„์š”.

  1. ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ 'Sources' ํƒญ์—์„œ 'Async' ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ด์š”.
  2. let data = await fetchData(); ๋ผ์ธ์— ๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ๋ฅผ ์ฐ์–ด์š”.
  3. ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์„ธ์š”.

๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ์— ๊ฑธ๋ ธ์„ ๋•Œ Call Stack์„ ๋ณด๋ฉด, ๋น„๋™๊ธฐ ์ž‘์—…์˜ ์ „์ฒด ํ๋ฆ„์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”. ์ •๋ง ์‹ ๊ธฐํ•˜์ฃ ?

๐ŸŽญ Drama Time: ๋น„๋™๊ธฐ ์ฝ”๋“œ๋Š” ๋งˆ์น˜ ์—ฐ๊ทน ๋ฌด๋Œ€ ๊ฐ™์•„์š”. ์ฃผ์ธ๊ณต(๋ฉ”์ธ ์Šค๋ ˆ๋“œ)์ด ๋Œ€์‚ฌ๋ฅผ ํ•˜๋Š” ๋™์•ˆ, ๋’ค์—์„œ๋Š” ๋‹ค๋ฅธ ๋ฐฐ์šฐ๋“ค(๋น„๋™๊ธฐ ์ž‘์—…๋“ค)์ด ์ค€๋น„๋ฅผ ํ•˜๊ณ  ์žˆ์ฃ . 'Async' ์Šคํƒ ํŠธ๋ ˆ์ด์Šค๋Š” ์ด ๋ชจ๋“  ๋ฐฐ์šฐ๋“ค์˜ ๋™์ž‘์„ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฑฐ์˜ˆ์š”!

5. ๋””๋ฒ„๊น… ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค: ํ”„๋กœ์ฒ˜๋Ÿผ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ๐Ÿ†

์ž, ์ด์ œ ์šฐ๋ฆฌ๋Š” ๋””๋ฒ„๊น…์˜ ๋‹ค์–‘ํ•œ ๋„๊ตฌ๋“ค์„ ๋ฐฐ์› ์–ด์š”. ํ•˜์ง€๋งŒ ์ง„์ •ํ•œ ํ”„๋กœ๊ฐ€ ๋˜๋ ค๋ฉด ์ด ๋„๊ตฌ๋“ค์„ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์•Œ์•„์•ผ ํ•ด์š”. ๊ทธ๋ž˜์„œ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น… ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค!

5.1 ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜์„ธ์š”

๋ฒ„๊ทธ๋ฅผ ์žก์œผ๋ ค๋ฉด ๋จผ์ € ๊ทธ ๋ฒ„๊ทธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์•ผ ํ•ด์š”. ๋งˆ์น˜ ๋ฒ”์ธ์„ ์žก์œผ๋ ค๋ฉด ๋ฒ”ํ–‰ ํ˜„์žฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ์š”!

ํ•ญ์ƒ ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์œผ์„ธ์š”. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ์˜ ์›์ธ์„ ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”.

5.2 ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ  ํ…Œ์ŠคํŠธํ•˜์„ธ์š”

๊ณผํ•™์ž์ฒ˜๋Ÿผ ์ƒ๊ฐํ•ด๋ณด์„ธ์š”. "์ด ๋ฒ„๊ทธ์˜ ์›์ธ์€ ์ด๊ฒƒ์ผ ๊ฑฐ์•ผ"๋ผ๋Š” ๊ฐ€์„ค์„ ์„ธ์šฐ๊ณ , ๊ทธ ๊ฐ€์„ค์„ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฑฐ์˜ˆ์š”.