๐Ÿ“š๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive (1-5์žฅ)

yeonjeongยท2025๋…„ 2์›” 20์ผ

๋ถ€ํŠธ์บ ํ”„๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋Š” ๊ฐ™์€ ํŒ€์›๋“ค๋ผ๋ฆฌ ๋‚˜์ค‘์˜ ๋ฉด์ ‘, ์ˆ˜์—…์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๋ฅผ ์œ„ํ•ด์„œ โŒœ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep DiveโŒŸ ๋ฅผ ํŠน์ • ์žฅ๊นŒ์ง€ ์ฝ๊ณ  ์„ค๋ช…ํ•˜๋Š” Study๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

์˜ค๋Š˜ ์ •๋ฆฌํ•ด ๋ณผ ์žฅ์€ 1-5์žฅ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋‚ด์šฉ
1์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
2์žฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€?
3์žฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ์‹คํ–‰ ๋ฐฉ๋ฒ•
4์žฅ ๋ณ€์ˆ˜
5์žฅ ํ‘œํ˜„์‹๊ณผ ๋ฌธ

1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์ปดํ“จํ„ฐ์—๊ฒŒ ์‹คํ–‰์„ ์š”๊ตฌํ•˜๋Š” ์ผ์ข…์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜
  • 0๊ณผ 1๋ฐ–์— ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ธฐ๊ณ„๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ •ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•˜๊ฒŒ ์š”๊ตฌ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•˜๋Š” ์ž‘์—… -> "์ฝ”๋“œ"
  • Computational thinking(์ปดํ“จํŒ… ์‚ฌ๊ณ )

1) ์ปดํŒŒ์ผ๋Ÿฌ(Compiler) / ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter)

๊ธฐ๊ณ„์–ด๋กœ ์ง์ ‘ ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์œผ๋กœ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์•ฝ์†๋œ ๊ตฌ๋ฌธ(๋ฌธ๋ฒ•)์œผ๋กœ ๊ตฌ์„ฑ๋œ "ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด"๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•œ ํ›„, ๊ทธ์ ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ผ์ข…์˜ ๋ฒˆ์—ญ๊ธฐ

2) ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ

console.log("Hello World")
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์–ธ์–ด๋Š” ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ๋กœ ์ด๋ค„์ง
  • ํ”„๋กœ๊ทธ๋žจ์„ ํ•  ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ๋ฒ•์„ ์ค€์ˆ˜ํ•˜๋Š” ๊ฒƒ๋„ ๋งž์ง€๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์–ด์•ผ ํ•จ
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์ง‘ํ•ฉ์„ ๋ถ„์„ํ•ด์„œ ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ๊ทธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ

2. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ž€

1) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ฒœ์‚ฌ

(1) ์‹œ์ž‘

์•ฝ 90%์˜ ์‹œ์žฅ ์ ์œ ์œจ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ € ์‹œ์žฅ์„ ์ง€๋ฐฐํ•˜๊ณ  ์žˆ๋˜ ๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ๋Š” ์›นํŽ˜์ด์ง€์˜ ๋ณด์กฐ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒฝํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜๊ณ , ๊ทธ๋ž˜์„œ ํƒ„์ƒํ•œ ๊ฒƒ์ด "๋ธŒ๋ Œ๋˜ ์•„์ดํฌ"๊ฐ€ ๊ฐœ๋ฐœํ•œ "์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ"

(2) ์ด๋ฆ„์˜ ๋ณ€์ฒœ์‚ฌ

1996๋…„ 3์›”, "๋ชจ์นด Mocha"
๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์ธ ๋„ท ์Šค์ผ€์ดํ”„ ๋‚ด๋น„์ผ€์ดํ„ฐ2์— ํƒ‘์žฌ
1996๋…„ 9์›”, "๋ผ์ด๋ธŒ์Šคํฌ๋ฆฝํŠธ"
1996๋…„ 12์›”, "์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ"

(3) ํ‘œ์ค€ํ™”

1996๋…„ 8์›”,
๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ(MS)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŒŒ์ƒ ๋ฒ„์ „์ธ "JScript"๋ฅผ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ์–ด์— ํƒ‘์žฌ.

๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ์™€ MS๋Š” ์ž์‚ฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์‹œ์žฅ ์ ์œ ์œจ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ž์‚ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฒฝ์Ÿ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ํ‘œ์ค€ํ™”๋ณด๋‹ค๋Š” ์ ๋‹นํ•œ ํ˜ธํ™˜์„ฑ์„ ๊ฐ–์ถค

ํฌ๋กœ์Šค ๋ถ€๋ผ์šฐ์ง• ์ด์Šˆ
๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์›นํŽ˜์ด์ง€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ.

1996๋…„ 11์›”
๋„ท์Šค์ผ€์ดํ”„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ฆˆ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ํ‘œ์ค€์„ ๊ด€๋ฆฌํ•˜๋Š” ๋น„์˜๋ฆฌ ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ ECMA ์ธํ„ฐ๋„ค์…”๋„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€ํ™” ์š”์ฒญ

1997๋…„ 7์›” ECMAScript
ECMA-62๋ผ ๋ถˆ๋ฆฌ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํฌ๋ฐ˜ ์‚ฌ์–‘์ด ์™„์„ฑ๋˜์—ˆ์œผ๋‚˜, ์ƒํ‘œ๊ถŒ ์ด์Šˆ๋กœ ECMAScript๋กœ ๋ช…๋ช….

1999๋…„ ECMAScript3
์ •๊ทœ ํ‘œํ˜„์‹, try... catch

2009๋…„ ECMAScript 5(EC5)์™€ HTML5 ๊ณต๊ฐœ
JSON, stirt mode, ์ ‘๊ทผ์ž ํ”„๋กœํผํ‹ฐ, ํ”„๋กœํผํ‹ฐ ์–ดํŠธ๋ฆฌ๋ทฐํŠธ ์ œ์–ด, ํ–ฅ์ƒ๋œ ๋ฐฐ์—ด ์กฐ์ž‘ ๊ฐ€๋Šฅ(forEach, map, filtter, reduce, some, every)

2015๋…„ ECMAScript 6
let/const ํ‚ค์›Œ๋“œ, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ชจ๋“ˆ ๋“ฑ๊ณผ ๊ฐ™์ด ๋ฒ”์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฏธ๋ฐ ์–ธ์–ด๋กœ์„œ ๊ฐ–์ถฐ์•ผ ํ•  ๊ธฐ๋Šฅ๋“ค์„ ๋Œ€๊ฑฐ ๋„์ž…ํ•˜๋Š” ํฐ ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ดํ›„ ๋ฒ„์ „์€ ๋น„๊ต์  ์ž‘์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ˆ˜์ค€์œผ๋กœ ๋งค๋…„ ๊ณต๊ฐœํ•  ๊ฒƒ ์˜ˆ๊ณ 

2) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์„ฑ์žฅ

์ดˆ์ฐฝ๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›นํŽ˜์ด์ง€์˜ ๋ณด์กฐ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•œ์ •์ ์ธ ์šฉ๋„๋กœ ํ™œ์šฉ๋˜์—ˆ๋Š”๋ฐ ์ด์ „์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์—ˆ๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

(1) Ajax

1999๋…„, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•ด ์„œ๋ฒ„์™€ ๋ธŒ๋ผ์šฐ๊ฐ€ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ๊ธฐ๋Šฅ์œผ๋กœ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค.

์ด์ „์˜ ์›นํŽ˜์ด์ง€๋Š” ํ™”๋ฉด์ด ์ „ํ™œ ๋  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ ์ƒˆ๋กœ์šด HTML์„ ์ „์†ก ๋ฐ›์•„ ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ๋™๋˜์–ด์„œ ํ™”๋ฉด์ด ์ˆœ๊ฐ„์ ์œผ๋กœ ๊นœ๋ฐ•์ด๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ , ๋ณ€๊ฒฝํ•  ํ•„์š” ์—†๋Š” ๋ถ€๋ถ„๋„ ๋ Œ๋”๋งํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ํ†ต์‹ ๊ณผ ์„ฑ๋Šฅ๋ฉด์—์„œ๋„ ๋ถˆ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Ajax๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก ๋ฐ›์•„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅธ ์„ฑ๋Šฅ๊ณผ ๋ถ€๋“œ๋Ÿฌ์šด ํ™”๋ฉด ์ „ํ™˜์„ ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค.

2005๋…„, ๊ตฌ๊ธ€์ด ๋ฐœํ‘œํ•œ ๊ตฌ๊ธ€ ๋งต์Šค๋Š” Ajax ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ•˜๋Š” ๊ณ„๊ธฐ๋ฅผ ๋งˆ๋ จํ•˜์˜€์Šต๋‹ˆ๋‹ค.

(2) jQuery

2006๋…„, ๋‹ค์†Œ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋…ผ๋ž€์ด ์žˆ๋˜ DOM(Document Object Model)์„ ๋”์šฑ ์‰ฝ๊ฒŒ ์ œ์–ดํ•˜๊ณ ,, ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋„ ์–ด๋А ์ •๋„ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. jQuery๋Š” ๋„“์€ ์‚ฌ์šฉ์ž ์ธต์„ ์ˆœ์‹๊ฐ„์— ํ™•๋ณดํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ์ง๊ด€์ ์ธ jQuery๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์–‘์„ฑ๋˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

(3) V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„

2008๋…„, ๊ตฌ๊ธ€ ๋งต์Šค๋ฅผ ํ†ตํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ํ™•์ธํ•˜๊ณ , ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—”์ง„์˜ ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋  ๋•Œ ์ด๋Ÿฌํ•œ ์š”๊ตฌ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋น ๋ฅธ ์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” ์—”์ง„์œผ๋กœ V8 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์œ ์‚ฌํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ •์ฐฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ๋‹น์‹œ, ์›น ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰๋˜๋˜ ๋กœ์ง์ด ๋Œ€๊ฑฐ ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)๋กœ ์ด๋™ํ–ˆ๊ณ , ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์˜์—ญ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ์˜์—ญ์ด ์ฃผ๋ชฉ๋ฐ›๋Š” ๊ณ„๊ธฐ๋กœ ์ž‘์šฉํ•˜๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

(5) Node.js

2009๋…„, ๋ผ์ด์–ธ ๋‹ฌ์ด ๋ฐœํ‘œํ•œ Node.js๋Š” ๊ตฌ๊ธ€ V8์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ์ž…๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ €์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ๋งŒ ๋™์ž‘ํ•˜๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์ด์™ธ์˜ ํ™˜๊ฒฝ์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋…๋ฆฝ์‹œํ‚ค๋Š” ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ, ํŒŒ์ผ ์‹œ์Šคํ…œ, HTTP๋“ฑ ๋‚ด์žฅ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ ์˜์—ญ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋™ํ˜•์„ฑ์€ ๋ณ„๋„์˜ ์–ธ์–ด๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์„ ๋œ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Node.js๋Š” ๋น„๋™๊ธฐI/O๋ฅผ ์ง€์›ํ•˜๋ฉฐ ๋‹จ์ผ ์Šค๋ ˆ๋“œ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•จ์œผ๋กœ์จ ์š”์ฒญ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด I/O๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” Single Page Application ์— ์ ํ•ฉํ•˜๊ณ , CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

(6) SPA ํ”„๋ ˆ์ž„์›Œํฌ

๋ชจ๋˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋น„๊ตํ•ด๋„ ์†์ƒ‰์ด ์—†๋Š” ์„ฑ๋Šฅ๊ณผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜๊ฐ€ ๋˜์—ˆ๊ณ , ๋”๋ถˆ์–ด ๊ฐœ๋ฐœ ๊ทœ๋ชจ์™€ ๋ณต์žก๋„๋„ ์ƒ์Šน๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด์ „์˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ๋Š” ๋ณต์žกํ•ด์ง„ ๊ฐœ๋ฐœ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์–ด๋ ค์›Œ์กŒ๊ณ , ์ด๋Ÿฌํ•œ ๋‹ˆ์ฆˆ์— ๋”ฐ๋ผ์„œ ๋งŽ์€ ํŒจํ„ด๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ถœํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๋ฉด์„œ ํ™•์žฅํ•˜๊ธฐ ์‰ฌ์šด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์˜ ๊ตฌ์ถ•์„ ์–ด๋ ต๊ฒŒ ํ–ˆ๊ณ , ํ•„์—ฐ์ ์œผ๋กœ ํ”„๋ ˆ์ธ์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.
Component Based Delvelopment ๋ฐฉ๋ฒ•๋ก ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” SPA์˜ ๋Œ€์ค‘ํ™”๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ, Angular, React, Vue.js, Sevlte๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜ํ•œ ๋งŽ์€ ์‚ฌ์šฉ์ธต์„ ํ™•๋ณดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

3) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŠน์ง•

1) ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์œ ์ผํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

2) ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ„๋„์˜ ์ปดํŒŒ์ผ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

  • ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์™€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์žฅ์ ‘์„ ๊ฒนํ•ฉํ•ด ๋น„๊ต์  ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋А๋ฆฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ๋‹จ์  ๋ณด์™„
  • ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ฆ‰์‹œ ์‹คํ–‰ํ•˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋จธ์‹  ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ตœ์ ํ™”

3) ๋ฉ€ํ‹ฐ ํŒจ๋Ÿฌ๋‹ค์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

  • ๋ช…๋ นํ˜•, ํ•จ์ˆ˜ํ˜•, ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›

3. ๋ณ€์ˆ˜

1) ๋ณ€์ˆ˜์˜ ํ•„์š”์„ฑ

10+20

์œ„์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์ด ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ + ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋จผ์ €, ์—ฐ์‚ฐ์ž์˜ ์ขŒ๋ณ€๊ณผ ์šฐ๋ณ€์˜ ์ˆซ์ž ๊ฐ’(ํ”ผ์—ฐ์‚ฐ์ž)๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋•Œ ์ปดํ“จํ„ฐ๋Š” CPU๋ฅผ ํ†ตํ•ด์„œ ์—ฐ์‚ฐ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ์ง‘ํ•ฉ์ฒด์ด๊ณ , ์…€ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋Š” 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)์ด๋ฉฐ, ์ปดํ“จํ„ฐ๋Š” ์…€์˜ ํฌ๊ธฐ ์ฆ‰ 1 ๋ฐ”์ดํŠธ ์ž”์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์Šต๋‹ˆ๋‹ค.

๊ฐ ์…€์€ ๊ณต์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ–๋Š”๋ฐ, ์ด ์ฃผ์†Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋งŒํผ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

ex. 4GB -> 0 ~ 4,294,967,295(0x00000000 ~ 0xFFFFFFFF)

์ปดํ“จํ„ฐ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ(์ข…๋ฅ˜ ์ƒ๊ด€ ์—†์ด)๋ฅผ 2์ง„์ˆ˜ ์ฒ˜๋ฆฌํ•˜์—ฌ, 2์ง„์ˆ˜๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

"10 + 20" ์„ ์—ฐ์—ฐ์‚ฐํ•ด์„œ ๋งŒ๋“ค์–ด๋‚ธ 30์„ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ณ„์† ์žฌ์‚ฌ์šฉ์„ ํ•˜๊ฑฐ ์‹ถ๋‹ค๋ฉด ๊ฒฐ๊ณผ 30์ด ์ €์žฅ๋œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ง‘์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ง์ ‘ ์ ‘๊ทธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์€ ์œ„ํ—˜ํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ์šด์˜์ฒด์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์‹œ์Šคํ…œ์„ ๋ฉˆ์ถ”๊ฒŒ ํ•˜๋Š” ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด๋ฅผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๊ฐœ๋ฐœ์ž์˜ ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด๋ฅผ ํ—ˆ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž„์˜๋กœ ๊ฒฐ์ •๋˜์–ด ๋™์ผํ•œ ์ปดํ“จํ„ฐ, ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰์„ ํ•ด๋„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ๊ฐ’์ด ์ €์žฅ๋  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ "๋ณ€์ˆ˜"๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

(1) ๋ณ€์ˆ˜

: ํ•˜๋‚˜๋ฆ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ž์ฒด ๋˜๋Š” ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ™์ธ ์ด๋ฆ„ -> ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ƒ์ง•์ ์ธ ์ด๋ฆ„

var result = 10+20;

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ๋˜๋ฉด, 30์ด๋ผ๋Š” ๊ฐ’์„ result์— ์ €์žฅํ•˜๋ ค ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ€์ˆ˜ ์ด๋ฆ„ : result
  • ๋ณ€์ˆ˜ ๊ฐ’ : 30
  • ํ• ๋‹น(๋Œ€์ž…, ์ €์žฅ) : ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ
  • ์ฐธ์กฐ: ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ

๋ณ€์ˆ˜ ํ• ๋‹น์„ ํ†ตํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋กœ ๋ช…๋ช…ํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํ†ตํ•ด ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ์•Œ๊ณ  ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(2) ์‹๋ณ„์ž

  • ์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•ด์„œ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„, ๋ณ€์ˆ˜์˜ ๋˜ ๋‹ค๋ฅธ ์ด๋ฆ„

  • ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์–ด์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ ๊ฐ’์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

  • ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์˜ ์ด๋ฆ„์€ ๋ชจ๋‘ ์‹๋ณ„์ž -> ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์กด์žฌํ•˜๋Š” ์–ด๋–ค ๊ฐ’์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์€ ๋ชจ๋‘ ์‹.๋ณ„.์ž.

(3) var์„ ํ™œ์šฉํ•œ ๋ณ€์ˆ˜ ์„ ์–ธ

: ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ -> ๋ณ€์ˆ˜ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ

1๏ธโƒฃ var ํ‚ค์›Œ๋“œ ์„ ์–ธ

var score

ํ‚ค์›Œ๋“œ : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ํ‚ค์›Œ๋“œ๋ฅผ ๋งŒ๋‚˜๋ฉด ์ž์‹ ์ด ์ˆ˜ํ–‰ํ•ด์•ผํ•  ์•ฝ์†๋œ ๋™์ž‘์„ ์ˆ˜ํ–‰

2๏ธโƒฃ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋“ฑ๋กํ•˜๊ณ  ๊ฐ’์„ ์ €์žฅํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ™•๋ณด

  • ์•„์ง ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์•„์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋น„์–ด์žˆ์„ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ํ™•๋ณด๋œ ๊ณต๊ฐ„์—๋Š” undefined ์ด ์•”๋ฌต์ ์œผ๋กœ ํ• ๋‹น๋˜์–ด ์ดˆ๊ธฐํ™”
  • ์ดˆ๊ธฐํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ด์ „์— ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ•์…˜์ด ์‚ฌ์šฉํ–ˆ๋˜ ๊ฐ’์ด ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฌํ•œ "์“ฐ๋ ˆ๊ธฐ ๊ฐ’" ์ด ์ถœ๋ ฅ
  • ์„ ์–ธํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž์— ์ ‘๊ทผํ•˜๋ฉด ReferenceError(์ฐธ์กฐ ์—๋Ÿฌ) ๋ฐœ์ƒ

undefined : ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’
์‹คํ–‰ ์ปจํ…์ŠคํŠธ : ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ๋น„๋กฏํ•œ ๋ชจ๋“  ์‹๋ณ„์ž๊ฐ€ ๋“ฑ๋ก๋˜๋Š” ๊ณณ. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ™œ์šฉ์„ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ. key, velue์˜ ํ˜•์‹์ธ ๊ฐ์ฒด๋กœ ๋“ฑ๋ก๋˜์–ด ๊ด€๋ฆฌ

3๏ธโƒฃ ๋ณ€์ˆ˜ ์‹คํ–‰๊ณผ ํ˜ธ์ด์ŠคํŒ…

console.log(score);
var score;

์œ„์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋จผ์ €์˜ค๊ณ , ๋ณ€์ˆ˜๊ฐ€ ๋‚˜์ค‘์— ์„ ์–ธ๋˜๋ฉด ์„ ์–ธ๋˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋กœ ์ธํ•ด "์ฐธ์กฐ์—๋Ÿฌ"๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ undefined ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธ์ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋Ÿฐํƒ€์ž„์ด ์•„๋‹ˆ๋ผ ๊ทธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ์†Œ์Šค์ฝ”๋“œ ํ‰๊ฐ€ ๊ณผ์ • ์ง„ํ–‰
  • ์„ ์–ธ๋ฌธ์„ ์ฐพ์•„๋‚ด์–ด ์„ ์–ธ๋ฌธ ๋จผ์ € ์‹คํ–‰
  • ํ‰๊ฐ€ ๊ณผ์ •์ด ๋๋‚˜๋ฉด ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์„ ์–ธ๋ฌธ ์ œ์™ธ ์†Œ์Šค์ฝ”๋“œ ์‹คํ–‰

ํ˜ธ์ด์ŠคํŒ… Variable Hoisting
: ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ฝ”๋“œ์˜ ์„ ๋‘๋กœ ๋Œ์–ด ์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณ ์œ ์˜ ํŠน์ง•

(4) ๊ฐ’์˜ ํ• ๋‹น

var score; // ๋ณ€์ˆ˜ ์„ ์–ธ
score = 80; // ๋ณ€์ˆ˜ ํ• ๋‹น

var score = 80; // ๋ณ€์ˆ˜ ์„ ์–ธ + ํ• ๋‹น

์œ„์˜ ์ฝ”๋“œ๋Š” ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ•˜๋‹น์„ 2๊ฐœ์˜ ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น์˜ ์‹คํ–‰ ์‹œ์ ์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  • ๋ณ€์ˆ˜ ์„ ์–ธ : ๋Ÿฐํƒ€์ž„ ์ด์ „
  • ๊ฐ’์˜ ํ• ๋‹น : ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๋Ÿฐํƒ€์ž„์— ์ง„ํ–‰
console.log(score); // undefined

var score = 80;

console.log(score); // 80

(5) ๊ฐ’์˜ ์žฌํ• ๋‹น

var score = 80; 
score = 90;

์œ„์™€ ๊ฐ™์ด ๋‚˜์™€์ ธ์žˆ์œผ๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ 80 ๋ฐ›์€ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ undefined๋กœ ํ•œ ๋‹ค์Œ, 90์ด๋ผ๋Š” ๊ฐ’์„ ๋ฐ›๋Š”๋‹ค.

์ƒ์ˆ˜ : ์œ„์™€ ๊ฐ™์ด ์žฌํ• ๋‹น์„ ๋ฐ›์•˜์„ ๋•Œ, ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ์ง€์นญ
const : ์žฌํ• ๋‹น์ด ๊ธˆ์ง€๋˜์–ด ๋ณ€์ˆ˜๋ฅผ ์ƒ์ˆ˜๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ -> ๋ฐ˜๋“œ์‹œ ์ƒ์ˆ˜๋งŒ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

90์ด๋ผ๋Š” ๊ฐ’์„ ๋ฐ›์•˜์„ ๋•Œ, 90 ์ด์ „์˜ ๊ฐ’์ธ undefined, 80์€ ์–ด๋–ค ๋ณ€์ˆ˜๋„ ๊ฐ’์œผ๋กœ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์•„ ์‹๋ณ„์ž์™€ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถˆํ•„์š”ํ•œ ๊ฐ’๋“ค์€ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋™ ํ•ด์ œ ๋˜์ง€๋งŒ, ์–ธ์ œ ํ•ด์ œ๋ ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ(garbage collector) : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ• ๋‹นํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ฒ€์‚ฌํ•˜์—ฌ ๋”์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•˜๋Š” ๊ธฐ๋Šฅ. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐฉ์ง€

์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด์™€ ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด
: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ™์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ํ• ๋‹น๊ณผ ํ•ด์ œ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ๊ฐ€ ์žˆ๋Š” ์–ธ์–ด๋ฅผ ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ์—ญ๋Ÿ‰์— ์˜์กดํ•˜๋Š” ๋ถ€๋ถ„์ด ์ ์–ด์ ธ ์–ด๋А ์ •๋„ ์ผ์ •ํ•œ ์ƒ์‚ฐ์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ๋ฉด์—์„œ ์†์‹ค์„ ๊ฐ์ˆ˜ ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
C์–ธ์–ด์˜ ๊ฒฝ์šฐ, malloc(), free() ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์–ธ๋งค๋‹ˆ์ง€๋“œ ์–ธ์–ด์˜ ๊ฒฝ์šฐ ๊ฐœ๋ฐœ์ž์˜ ์—ญ๋Ÿ‰์— ๋”ฐ๋ผ์„œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋ฅผ ์ƒ์‚ฐํ•  ๊ฐ€๋Šฅ์„ฑ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

(6) ์‹๋ณ„์ž ๋„ค์ด๋ฐ ๊ทœ์น™

  • ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž, ์ˆซ์ž, ์–ธ๋”์Šค์ฝ”์–ด(_), ๋‹ฌ๋Ÿฌ๊ธฐํ˜ธ($)๋ฅผ ํฌํ•จ ๊ฐ€๋Šฅ
  • ์‹œ์ž‘์€ ๋ฌธ์ž, ์–ธ๋”์Šค์ฝ”์–ด(_), ๋‹ฌ๋Ÿฌ๊ธฐํ˜ธ($)๋กœ ๊ฐ€๋Šฅ
  • ์˜ˆ์•ฝ์–ด(ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๊ฑฐ๋‚˜ ์‚ฌ์šฉ๋  ์˜ˆ์ •์˜ ๋‹จ์–ด)๋Š” ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ
  • ์‰ผํ‘œ๋ฅผ ํ†ตํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฌธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ ํ•œ๋ฒˆ์— ์„ ์–ธ ๊ฐ€๋Šฅ(๊ฐ€๋…์„ฑ๋•Œ๋ฌธ์— ์žฆ์€ ์‚ฌ์šฉ โŒ
  • ์•ŒํŒŒ๋ฒณ ์ด์™ธ์˜ ์–ธ์–ด ์‚ฌ์šฉ โŒ
  • ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ (์•„๋ž˜์˜ ์˜ˆ์‹œ๋Š” ๊ฐ๊ฐ€์˜ ๋ณ„๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ์ธ์‹)
 var firstname
 var fristName
 var FRISTNAME
[4๊ฐ€์ง€ ์œ ํ˜•์˜ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜]
// ์นด๋ฉœ ์ผ€์ด์Šค (์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์ด๋ฆ„)
var firstName; 

// ์Šค๋„ค์ดํฌ์ผ€์ด์Šค 
var first_name

// ํŒŒ์Šค์นผ ์ผ€์ด์Šค (์ƒ์„ฑ์ž ํ•จ์ˆ˜, ํด๋ž˜์Šค ์ด๋ฆ„)
var FirstName 

// ํ—๊ฐ€๋ฆฌ์–ธ ์ผ€์ด์Šค 
var strFistName; // type + identifier
var $elem = document.getElementById('myId'); // DOM ๋…ธ๋“œ 
var observable$ = fromEvent(document, 'click'); // RxJS ์˜ต์ €๋ฒ„๋ธ”

4. ํ‘œํ˜„์‹๊ณผ ๋ฌธ

1) ๊ฐ’

: ์‹(ํ‘œํ˜„์‹)์ด ํ‰๊ฐ€๋˜์–ด ์ƒ์„ฑ๋œ ๊ฒฐ๊ณผ

var sum = 10+20 // ๊ฐ’: 30

๋ณ€์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ฒŒ ๋ถ™์ธ ์ด๋ฆ„์ด๊ณ , ๋ณ€์ˆ˜์— ํ• ๋˜๋Š” ๊ฒƒ์€ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์ฝ”๋“œ์˜ sum ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๋Š” ๊ฒƒ์€ "10+20"์ด ์•„๋‹ˆ๋ผ "30"์ž…๋‹ˆ๋‹ค.

2) ๋ฆฌํ„ฐ๋Ÿด

  • ๊ฐ’์—์„œ ์‚ดํŽด๋ณธ ์˜ˆ์ œ์™€ ๊ฐ™์ด ์‹์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž ๋˜๋Š” ์•ฝ์†๋œ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ํ‘œ๊ธฐ๋ฒ•
  • ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž(์•„๋ผ๋น„์•„ ์ˆซ์ž, ์•ŒํŒŒ๋ฒณ, ํ•œ๊ธ€ ๋“ฑ) ๋˜๋Š” ๋ฏธ๋ฆฌ ์•ฝ์†๋œ ๊ธฐํ˜ธ('', "", [],{})๋“ฑ์œผ๋กœ ํ‘œ๊ธฐํ•œ ์ฝ”๋“œ
3 // ์ˆซ์ž ๋ฆฌํ„ฐ๋„ "3"

3) ํ‘œํ˜„์‹

: ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ.
ํ‘œํ˜„์‹์ด ํ‰๊ฐ€๋˜๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ฐ’์„ ์ฐธ์กฐ(๋ฆฌํ„ฐ๋„๋„ ํ‘œํ˜„์‹)

// ๋ฆฌํ„ฐ๋„ ํ‘œํ˜„์‹
10 
'Hello'

// ์‹๋ณ„์ž ํ‘œํ˜„์‹(์„ ์–ธ์ด ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •)
sum
person.name
arr[1]

// ์—ฐ์‚ฐ์ž ํ‘œํ˜„์‹
10 + 20
sum  = 20
sum != 10

// ํ•จ์ˆ˜/๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ํ‘œํ˜„์‹(์„ ์–ธ์ด ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •)
square()
person.getName()

๋™์น˜ : ํ‘œํ˜„์‹๊ณผ ํ‘œํ˜„์‹์ด ํ‰๊ฐ€๋œ ๊ฐ’์€ ๋™๋“ฑํ•œ ๊ด€๊ณ„
1+2 =3์—์„œ 1+2 ์™€ 3์€ ๋™์น˜

4) ๋ฌธ

: ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ๋‹จ์œ„์ด์ž ์ตœ์†Œ ์‹คํ–‰ ๋‹จ์œ„ (ํ† ํฐ์œผ๋กœ ๊ตฌ์„ฑ)

ํ† ํฐ(token): ๋ฌธ๋ฒ•์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ฌธ๋ฒ•์ ์œผ๋กœ ๋” ์ด์ƒ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์ฝ”๋“œ์˜ ๊ธฐ๋ณธ ์š”์†Œ

5) ์„ธ๋ฏธํด๋ก (;)

  • ๋ฌธ์˜ ์ข…๋ฃŒ๋ฅผ ์˜๋ฏธ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์„ธ๋ฏธํด๋ก ์„ ํ†ตํ•ด์„œ ๋ฌธ์ด ์ข…๋ฃŒํ•œ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์ˆœ์ž์ ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ฌธ์„ ์‹คํ–‰
  • 0๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„ ์ค‘๊ด„ํ˜ธ{} ๋กœ ๋ฌถ์€ ์ฝ”๋“œ ๋ธ”๋ก ๋’ค์—๋Š” โŒ -> ์ž์ฒด ์ข…๊ฒฐ์„ฑ์„ ๊ฐ–๊ธฐ์— ์•ˆ ๋ถ™์ž„
  • ์„ธ๋ฏธ์ฝœ๋ก ์€ ์˜ต์…˜, ASI(์„ธ๋ฏธ์ฝœ๋ก  ์ž๋™ ์‚ฝ์ž… ๊ธฐ๋Šฅ)์ด ์•”๋ฌต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ƒ๋žต ๊ฐ€๋Šฅ
    - ์•„์ง ๋…ผ์Ÿ์ค‘์ด๋‚˜, ์„ธ๋ฏธ์ฝœ๋ก ์ด ์ž๋™์œผ๋กœ ์‚ฝ์ž…์‹œ, ๊ฐ„ํ˜น ๊ฐœ๋ฐœ์ž์˜ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‚ฝ์ž…๋˜์–ด ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘

6) ํ‘œํ˜„์‹ ๊ตฌ๋ถ„ ๋ฐฉ๋ฒ•

  • ํ‘œํ˜„์‹ : ๊ฐ’์œผ๋กœ ํ‰๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ
  • ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ : ๊ฐ’์œผ๋กœ ํ‰๊ฐ€ ๋  ์ˆ˜ ์—†๋Š” ๋ฌธ
    ** ๊ฐ’์„ ๋„ฃ์–ด๋ณด๊ณ  ํ™•์ธ
// ํ‘œํ˜„์‹์ด ์•„๋‹Œ ๋ฌธ
var num = 100;

// ํ‘œํ˜„์‹์ธ ๋ฌธ
100 + num // 110

//ํ• ๋‹น๋ฌธ 
num = 100; //100
profile
Backend ๊ฐœ๋ฐœ์ž๋กœ ๊ฑฐ๋“ญ๋‚˜๋Š” ๊ทธ ๋‚ ๊นŒ์ง€ !

0๊ฐœ์˜ ๋Œ“๊ธ€