Skip to Content
๐ŸŽ‰ Welcome to JS World!!! ๐ŸŽ‰

4์žฅ ๋ณ€์ˆ˜

4.1 ๋ณ€์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์™œ ํ•„์š”ํ•œ๊ฐ€?

๋ณ€์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฐœ๋…์ด๋‹ค

10+20 ์ด๋ผ๋Š” ์‹์ด ์žˆ์„ ๋•Œ ์‚ฌ๋žŒ์˜ ๋จธ๋ฆฌ์†์—์„œ๋Š”

  1. ์ˆซ์ž 10๊ณผ 20์„ ๋‘๋‡Œ์— ๊ธฐ์–ต(์ €์žฅ)ํ•œ๋‹ค. ์ด๋•Œ๋Š” 10, + 20 ์ด๋ผ๋Š” ๊ธฐํ˜ธ์˜ ์˜๋ฏธ๋ฅผ ์•Œ๊ณ  ์ดํ•ดํ•œ๋‹ค (๋ฆฌํ„ฐ๋Ÿด๊ณผ ์—ฐ์‚ฐ์ž)
  2. ์—ฐ์‚ฐํ•œ๋‹ค ์ด๋•Œ ํ‘œํ˜„์‹์˜ ์˜๋ฏธ๋ฅผ ํ•ด์„ํŒŒ์‹ฑํ•œ๋‹ค
  3. ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‘๋‡Œ์— ๊ธฐ์–ต(์ €์žฅ)ํ•œ๋‹ค ์ด ์ˆœ์„œ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค

์‚ฌ๋žŒ์€ ์ € ๊ณผ์ •์„ ๋ชจ๋‘ ๋‘๋‡Œ์—์„œ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ, ์ปดํ“จํ„ฐ๋Š” ๊ธฐ์–ต, ์—ฐ์‚ฐ ํ•˜๋Š” ๊ณผ์ •์ด ๋‹ค๋ฅธ ๋ถ€ํ’ˆ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค

  1. 10๊ณผ 20์„ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ธฐ์–ตํ•œ๋‹ค
  2. CPU์—์„œ ์—ฐ์‚ฐํ•œ๋‹ค
  3. ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ธฐ์–ตํ•œ๋‹ค

๊ทธ๋Ÿผ ๊ธฐ์–ต์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์™€ ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” CPU์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž

๋ฉ”๋ชจ๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ์ง‘ํ•ฉ์ฒด์ด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์…€ ํ•œ๊ฐœ์˜ ํฌ๊ธฐ๋Š” 1byte(8bit)์ด๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ 2์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ์ด๊ณณ์— ์ €์žฅ๋œ๋‹ค

๋ฉ”๋ชจ๋ฆฌ ์…€๋งˆ๋‹ค ๊ณ ์œ ์˜ ์ฃผ์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค

์ปดํ“จํ„ฐ๋Š” ์ด ๋ฉ”๋ชจ๋ฆฌ ์…€ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ(write) ํ•˜๊ฑฐ๋‚˜ ์ฝ๋Š”๋‹ค(read)

๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์—ญํ• 

10+20์„ ์—ฐ์‚ฐํ• ๋•Œ, ์šฐ์„  10๊ณผ 20์„ ๋ฉ”๋ชจ๋ฆฌ ์…€์— ์ €์žฅ(write)ํ•œ๋‹ค ๊ทธ๋ฆฌ๊ณ  ์—ฐ์‚ฐ์„ ํ• ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์…€์„ ์ฝ์–ด 10๊ณผ 20์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ ์–ป์–ด ๋‚ธ๋‹ค

๊ฐ’์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• 

์•„๊นŒ ์šฐ๋ฆฌ๋Š” 10+20์„ ๋”ํ•ด์„œ 30์ด๋ผ๋Š” ๊ฐ’์„ ์–ป์—ˆ๋‹ค. ์ด ๊ฐ’์€ ๋˜ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์…€์— ์ €์žฅ๋œ๋‹ค

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

๊ทธ๋ž˜์„œ, ๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐ’์— ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค

[!note] ์ •๋ฆฌ ๋ณ€์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„, ๋˜๋Š” ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค

๋ธŒ๋ผ์šฐ์ €์—์„œ ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค

์ •๋ฆฌ

let a = 10; let b = 10; a = 20;

[!note] ์™œ ์ด๋ ‡๊ฒŒ ๋ ๊นŒ? ์™œ ๊ฐ’์ด ๋ฐ”๋€Œ๋ฉด ์ƒˆ๋กœ์šด ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”๊ฑธ๊นŒ? ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด??

์šฉ์–ด๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•˜์ž๋ฉด ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ• ๋‹น, ๋Œ€์ž…, ์ €์žฅ(assignment) ์ด๋ผ๊ณ  ํ•˜๊ณ  ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ๋Š” ๊ฒƒ์„ ์ฐธ์กฐ(reference) ๋ผ๊ณ  ํ•œ๋‹ค

๋ถˆ๋ณ€์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ

4.2 ์‹๋ณ„์ž

์‹๋ณ„์ž๋ž€ ์ด๋ฆ„์—์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๋“ฏ, ์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•˜์—ฌ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์ด๋‹ค

ํ•˜์ง€๋งŒ, ์‹๋ณ„์ž๋Š” ์‚ฌ์‹ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•˜์ง€๋Š” ๋ชปํ•œ๋‹ค ๋Œ€์‹  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค ์‹๋ณ„์ž๊ฐ€ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ฝ๊ณ , ๊ทธ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ด๊ธด ๊ฐ’์„ ์ฝ๋Š” ๊ณผ์ •์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด๋‹ค

[!note] ์‹๋ณ„์ž ์‹๋ณ„์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค

๋”ฐ๋ผ์„œ ๋‹จ์ˆœํ•œ ๋ณ€์ˆ˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ด๋ฆ„์„ ์‹๋ณ„์ž๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค

4.3 ๋ณ€์ˆ˜ ์„ ์–ธ

๋ณ€์ˆ˜ ์„ ์–ธ์ด๋ž€, ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๊ณ  ์„ ์–ธํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง„๋‹ค

  1. ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ์„ ์–ธ๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ํ•œ๊ฐœ๋ฅผ ๊ณจ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•œ๋‹ค
  2. ๊ทธ๋ฆฌ๊ณ  ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ES6 ์ „์—๋Š” var ํ‚ค์›Œ๋“œ ๋ฐ–์— ์—†์—ˆ์ง€๋งŒ, ์ดํ›„ let๊ณผ const๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค var์€ ๋‹จ์ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค

์•„์ง let๊ณผ const์— ๋Œ€ํ•ด ๋ฐฐ์šฐ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ, ์šฐ์„ ์€ var์„ ์ด์šฉํ•ด ๋ณ€์ˆ˜ ์„ ์–ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

var ์„ ์–ธ์‹œ ์ผ์–ด๋‚˜๋Š” ๊ณผ์ •

  1. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ๋œ๋‹ค var score; ์ด๋ ‡๊ฒŒ ์„ ์–ธ์„ ํ•˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค

  2. ์ดˆ๊ธฐ๊ฐ’์ด ์„ค์ •๋œ๋‹ค var score=0; ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž๊ฐ€ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์ด undefined๋กœ ์ž๋™ ์ดˆ๊ธฐํ™” ๋œ๋‹ค

undefined๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’์ด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ 6์žฅ์˜ [[๋ฐ์ดํ„ฐ ํƒ€์ž…]] ์—์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค

let๊ณผ const์˜ ์ดˆ๊ธฐ๊ฐ’

[!warning] ์ฐธ๊ณ  let์€ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์ดˆ๊ธฐ๊ฐ’์ด undefined๊ฐ€ ์•„๋‹ˆ๋‹ค const๋„ ์ž๋™์œผ๋กœ ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š๋Š”๋‹ค. const๋Š” ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค

4.4 ๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์‹คํ–‰ ์‹œ์ ๊ณผ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

ํ˜ธ์ŠคํŒ…? ํ˜ธ์ด์ŠคํŒ…?

ํ˜ธ์ŠคํŒ…(Hosting)๊ณผ ํ˜ธ์ด์ŠคํŒ…(Hoisting)์€ ์ด๋ฆ„๋งŒ ๋น„์Šทํ•œ ์™„์ „ ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋‹ค- ์ธ๋„์™€ ์ธ๋„๋„ค์‹œ์•„ ์ •๋„ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค

ํ˜ธ์ŠคํŒ… ์€ ์›น ์„œ๋น„์Šค๋‚˜ ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…์„ ํ•  ๋•Œ ์“ฐ๋Š” ์šฉ์–ด์ด๋‹ค

ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด์„œ AWS์„œ๋ฒ„์— ์˜ฌ๋ฆฌ๋ฉด, ์„œ๋ฒ„์— ํ”„๋กœ์ ํŠธ๊ฐ€ โ€˜ํ˜ธ์ŠคํŒ…โ€™ ๋˜์—ˆ๋‹ค ๋ผ๊ณ  ํ•œ๋‹ค

๋ฐ˜๋ฉด ํ˜ธ์ด์ŠคํŒ…์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ โ€˜ํŠน์ง•โ€™์„ ์ง€์นญํ•˜๋Š” ์šฉ์–ด๋‹ค.

Javascript๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์ž„๊ณผ ๋™์‹œ์— ์ปดํŒŒ์ผ ์–ธ์–ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ํŠน์ง•์ด ์กด์žฌํ•œ๋‹ค.

ํ˜ธ์ด์ŠคํŒ…(Hoisting)์˜ ๊ฐœ๋…

ํ˜ธ์ด์ŠคํŒ…(Hoisting)์€ JavaScript์—์„œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์„ ์–ธ์ด ์Šค์ฝ”ํ”„์˜ ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ํŠน์ง•์ด๋‹ค

์ฝ”๋“œ ์‹คํ–‰ ์ „์— JavaScript ์—”์ง„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค

์•„์ง ์ž˜ ์™€ ๋‹ฟ์ง€ ์•Š์œผ๋‹ˆ ์ฝ”๋“œ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด์ž.

ํ˜ธ์ด์ŠคํŒ…์˜ ์ข…๋ฅ˜์—๋Š” ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ์žˆ๋‹ค.

๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ•˜๋ฉด ์ฝ”๋“œ์˜ ๋งจ ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„๋‹ค

[!question] ํ˜ธ์ด์ŠคํŒ…์˜ ์ด์ ์ด ๋ฌด์—‡์ธ๊ฐ€์š”? ์–ด๋””์„œ๋“  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋„ ๋œ๋‹ค

๋‹จ, ์ดˆ๊ธฐํ™”(๊ฐ’ ํ• ๋‹น)๋Š” ๋Œ์–ด์˜ฌ๋ ค์ง€์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ๋‹จ์ˆœํžˆ ์„ ์–ธ๋งŒ ํ•ด์ค€๋‹ค. var๋กœ ์„ ์–ธ๋œ ํ‚ค์›Œ๋“œ์˜ ๊ฒฝ์šฐ, ์ด๋•Œ undefined๋กœ ์ดˆ๊ธฐํ™” ๋œ๋‹ค

console.log(x); // x๊ฐ€ ์„ ์–ธ๋œ ์ƒํƒœ๋ผ undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค var x = 100; console.log(x); //100์ด ์ถœ๋ ฅ๋œ๋‹ค

์œ„์˜ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด JS์—”์ง„์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค

var x; //๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…, ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง console.log(x); // undefined var x = 100; console.log(x); // 100

var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋ฉฐ, ์„ ์–ธ๋ถ€๊ฐ€ ๋Œ์–ด์˜ฌ๋ ค์ง€์ง€๋งŒ ๊ฐ’์„ ๋„ฃ์–ด์ค€ ๋ถ€๋ถ„(์ดˆ๊ธฐํ™” ๋œ ๋ถ€๋ถ„)์€ ๋Œ์–ด์˜ฌ๋ ค์ง€์ง€ ์•Š์•„ undefined๋กœ ์ถœ๋ ฅ๋œ๋‹ค

์ด๋ฅผ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๋ณด๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“œ๋ฅผ ์ญ‰ ๋ณด๋ฉด์„œ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์— ๋Œ€ํ•œ ์‚ฌ์ „์„ ๋งŒ๋“ ๋‹ค

์˜ˆ๋ฅผ ๋“ค์–ด

console.log(x + y + z); // undefined var x = 1; var y = 10; var z = 100; console.log(x + y + z); //111

๋ผ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์„๋•Œ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ๋ณ€์ˆ˜ x,y,z๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ปดํŒŒ์ผ ์ „์— ๋ณ€์ˆ˜ ์‚ฌ์ „์„ ๋งŒ๋“ ๋‹ค. ์ด๋•Œ, ๊ฐ’์€ ๋„ฃ์ง€ ์•Š๊ณ  ๋น„์›Œ๋‘”๋‹ค(undifined)

type๋ณ€์ˆ˜๋ช…๊ฐ’
varxundefined
varyundefined
varzundefined

๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ ํ•˜๋‚˜ ์‹คํ–‰์‹œํ‚ค๋ฉด์„œ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋งˆ์ฃผ์น ๊ฒฝ์šฐ ( var x=1) ์ด ์‚ฌ์ „์— ๊ฐ’์„ ์ˆ˜์ •ํ•ด์ค€๋‹ค.

ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

ํ•จ์ˆ˜ ์„ ์–ธ์€ ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ๋Œ์–ด์˜ฌ๋ ค์ง„๋‹ค. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๋™์ผํ•˜๋‹ค

helloWorld(); // "Hello, World!" function helloWorld() { console.log("Hello, World!"); }

์œ„์˜ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•ด์„๋œ๋‹ค

//ํ•จ์ˆ˜ ํ˜ธ์ด์ŠคํŒ… (๋งจ ์œ„๋กœ ์˜ฌ๋ผ์˜ด) function helloWorld() { console.log("Hello, World!"); } helloWorld(); // "Hello, World!"

ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜์ง€๋งŒ ํ•จ์ˆ˜๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€, ํ˜ธ์ด์ŠคํŒ…์€ ์„ ์–ธ๋ถ€๋งŒ ๋Œ์–ด์˜ฌ๋ ค์ง€๋ฉฐ ํ• ๋‹น(์ดˆ๊ธฐํ™”) ๋ถ€๋ถ„์€ ์›๋ž˜ ์œ„์น˜์—์„œ ์‹คํ–‰๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด undefined๊ฐ€ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ๋‹ค.

ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ๋Š” ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ๋Œ์–ด์˜ฌ๋ ค์ง€๋ฏ€๋กœ ์„ ์–ธ ์ด์ „์— ํ˜ธ์ถœํ•ด๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค

์งˆ๋ฌธ: var / let,const ํ˜ธ์ด์ŠคํŒ…์˜ ์ฐจ์ด

let๊ณผ const๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค

  • var: ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋Œ์–ด์˜ฌ๋ ค์ ธ์„œ, ์„ ์–ธ ์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด undefined๊ฐ€ ๋‚˜์˜จ๋‹ค
console.log(a); // undefined var a = 10; console.log(a); // 10

let๊ณผ const: ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋Œ์–ด์˜ฌ๋ ค์ง€์ง€๋งŒ, ์„ ์–ธ ์ „์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ์„ ์–ธ ์ „์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค

console.log(b); // ReferenceError: b is not defined let b = 20; console.log(c); // ReferenceError: c is not defined const c = 30;

์™œ๋ƒํ•˜๋ฉด let๊ณผ const๋Š” ์„ ์–ธ์ด ํ˜ธ์ด์ŠคํŒ…๋˜์ง€๋งŒ ์ดˆ๊ธฐํ™”๋Š” ํ˜ธ์ด์ŠคํŒ…๋˜์ง€ ์•Š๋Š”๋‹ค.

TDZ

์ด๋ ‡๊ฒŒ ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋˜๊ณ  ๋‚˜์„œ๋ถ€ํ„ฐ ์ดˆ๊ธฐํ™”๋˜๊ธฐ ์ „๊นŒ์ง€์˜ ๊ตฌ๊ฐ„์„ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€(TDZ)๋ผ๊ณ  ํ•œ๋‹ค Temporal Dead Zone

type๋ณ€์ˆ˜๋ช…๊ฐ’
leta(๋น„์–ด์žˆ์Œ)
letb(๋น„์–ด์žˆ์Œ)
constc(๋น„์–ด์žˆ์Œ)

4.5 ๊ฐ’์˜ ํ• ๋‹น

๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ• ๋‹น ์ด๋ผ๊ณ  ํ•œ ๋‹ค๋Š” ๊ฒƒ์€ ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋‹ค ์ด๋•Œ, ํ• ๋‹น ์—ฐ์‚ฐ์ž =์„ ์‚ฌ์šฉํ•œ๋‹ค ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ ํ• ๋‹นํ•œ๋‹ค

var score = 80;

๋˜ํ•œ ์œ„์—์„œ ํ˜ธ์ด์ŠคํŒ…์— ๋Œ€ํ•ด ์•Œ์•„๋ณผ๋•Œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, ๋ณ€์ˆ˜ ์„ ์–ธ์ด ํ˜ธ์ด์ŠคํŒ… ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์ด๋ฃจ์–ด์ง€๊ณ , ๊ฐ’์˜ ํ• ๋‹น์€ ๋‚˜์ค‘์— ์ด๋ฃจ์–ด์ง„๋‹ค

[!note] ๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น์€ 2๊ฐœ์˜ ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ๊ฐ๊ฐ ์‹คํ–‰๋˜๋ฉฐ ์‹คํ–‰ ์‹œ์ ๋„ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ์ด ๋จผ์ € ์ด๋ฃจ์–ด์ง„๋‹ค(์ด๋•Œ ์ดˆ๊ธฐ ํ• ๋‹น๊ฐ’์€ undefined)

4.6 ๊ฐ’์˜ ์žฌํ• ๋‹น

[!note] > let var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๊ฐ’์˜ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค const๋Š” ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€ํ•˜๋ฉฐ, ์„ ์–ธ์‹œ ์ดˆ๊ธฐ๊ฐ’์„ ์ ์–ด ๊ทธ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค

์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด, ํ˜ธ์ด์ŠคํŒ…์— ์˜ํ•ด ๋ณ€์ˆ˜๊ฐ€ ์ฒ˜์Œ ์„ ์–ธ๋ ๋•Œ undefined๋กœ ์„ ์–ธ๋˜๊ธฐ์—, ์ผ๋ฐ˜์ ์ธ ๊ฐ’ ํ• ๋‹น๋„ ์‚ฌ์‹ค์€ ์žฌํ• ๋‹น์ด๋‹ค ์ด ๋…ผ๋ฆฌ๋ฅผ ์ ์šฉํ•ด๋„, โœ๏ธnote ์—์„œ ์ ์€ ์ด๋ก ์ด ๋˜‘๊ฐ™์ด ์ ์šฉ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค

ํ• ๋‹น๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์žฌํ• ๋‹น์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค undefined, 80 ์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฐ’์€ ==๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋™ํ•ด์ œ ๋œ๋‹ค== ๋‹จ! ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ธ์ œ ํ•ด์ œ๋˜๋Š”์ง€๋Š” ๋ชจ๋ฅธ๋‹ค

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

[!note] unmanaged lang VS managed lang

unmanaged language

C์™€ ๊ฐ™์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น, ํ•ด์ œ ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋ฅผ unmanaged language ๋ผ๊ณ  ํ•œ๋‹ค

managed language

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

![[Screenshot 2024-07-17 at 5.15.19 PM 1.png]] ![[Screenshot 2024-07-17 at 6.55.26 PM.png]]

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•œ๋‹ค

  • ์ฐธ์กฐ ์นด์šดํŒ…(Reference Counting): ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐ๋˜๋Š” ํšŸ์ˆ˜๋ฅผ ์ถ”์ ํ•˜๊ณ , ์ฐธ์กฐ ํšŸ์ˆ˜๊ฐ€ 0์ด ๋˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆํฌ ์•ค ์Šค์œ•(Mark-and-Sweep): ๋ฃจํŠธ ๊ฐ์ฒด์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๋„๋‹ฌ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๋งˆํฌํ•˜๊ณ , ๋งˆํฌ๋˜์ง€ ์•Š์€ ๊ฐ์ฒด๋Š” ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

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

์‹๋ณ„์ž ๊ทœ์น™

์•ž์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด, ์‹๋ณ„์ž๋ž€, ์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‹๋ณ„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์„ ์˜๋ฏธํ•œ๋‹ค ์‹๋ณ„์ž ์ด๋ฆ„์„ ์ง€์„๋•Œ, ๊ทœ์น™์ด ์กด์žฌํ•œ๋‹ค

  1. ๋ฌธ์ž, ์ˆซ์ž, ์–ธ๋”์Šค์ฝ”์–ด(_), ๋‹ฌ๋Ÿฌ๊ธฐํ˜ธ$ ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค
  2. ๋‹จ, ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜๋Š” ์—†๋‹ค
  3. ์˜ˆ์•ฝ์–ด๋Š” ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

์˜ˆ์•ฝ์–ด

์˜์–ด ์ด์™ธ์˜ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ์ด๋ฃจ์–ด์ง„ ์‹๋ณ„์ž: ํ•œ๊ธ€ ์‹๋ณ„์ž

ES5๋ถ€ํ„ฐ ์‹๋ณ„์ž๋ฅผ ๋งŒ๋“ค ๋•Œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๊ธ€, ์ผ๋ณธ์–ด ์‹๋ณ„์ž๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ์ฑ…์—์„œ๋Š” ํ•œ๊ธ€ ์‹๋ณ„์ž๋ฅผ ๋น„์ถ”์ฒœ ํ–ˆ๋‹ค

ํ•œํŽธ ํ† ์Šค์—์„œ๋Š” ํ•œ๊ธ€๋กœ ์ง“๋Š” ๋ณ€์ˆ˜๋ฅผ ์ง“๋Š” ์„ธ์ข…๋Œ€์™• ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ์ ์ด ์žˆ๋‹ค ๊ด€๋ จ ๊ฒŒ์‹œ๋ฌผ: ์„ธ์ข…๋Œ€์™• ํ”„๋กœ์ ํŠธโ€‰

(์•„์ง๊นŒ์ง€ ์‚ฌ์šฉํ•˜๋Š”์ง€๋Š” ๋ชจ๋ฅด๊ฒ ๋‹ค)

๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜

๋Œ€ํ‘œ์ ์œผ๋กœ 4๊ฐ€์ง€ ์œ ํ˜•์˜ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์ด ์žˆ๋‹ค

์นด๋ฉœ ์ผ€์ด์Šค

let devoceanYoung; ์†Œ๋ฌธ์ž๋Œ€๋ฌธ์ž

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

let devocean_young; ์†Œ๋ฌธ์ž_์†Œ๋ฌธ์ž

ํŒŒ์Šค์นผ ์ผ€์ด์Šค

let DevoceanYoung; ๋Œ€๋ฌธ์ž๋Œ€๋ฌธ์ž

ํ—๊ฐ€๋ฆฌ์–ธ ์ผ€์ด์Šค

let strDevoceanYoung; ํƒ€์ž…๋Œ€๋ฌธ์ž๋Œ€๋ฌธ์ž

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์— ์นด๋ฉœ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ƒ์„ฑ์ž ํ•จ์ˆ˜, ํด๋ž˜์Šค ์ด๋ฆ„์— ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

Last updated on