| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ์์ด์ ํ๋ธ
- dp400
- Movie
- ํฌ๋งํ์
- ์์ด๊ณต๋ถ
- ์ํ์ถ์ฒ์ ํ๋ฒ
- English
- ์์ด์ ํ๋ธ์ถ์ฒ
- Netflix
- ํดํ ์ด๋ธ์ค์น
- ๋ทํ๋ฆญ์ค
- ์ ํ์์น์ค์ง
- ์ํ์ถ์ฒ
- ์กฐ์ ํฐ๋ฆฌ์ค
- ๋ฐ๋ ผ400
- ์์ดํฐ
- ์กด์ผ
- ์ํ์ถ์ฒ์ ํ๋ธ
- ๊ฐ๋จ๋จน์๊ณณ
- ๊ฐ๋ฐ์ ์คํ
- ssg๋๊ณก์
- ์์ด๋ฌธ๋ฒ
- ์ํผ๋ฐ
- ์๋จ
- ์ ํ์์น์ค๊ทธ
- ssgํธ๋๋ง์ผ๋๊ณก์
- ์จ์ด๋ธ๊ตฌ๋
- ์ฝ์คํ์ค๋ทํ
- ์ง๋ฎค๋น
- ํดํ ์ด๋ธ์คํผ์ปค์ฐ๊ฒฐ
- Today
- Total
๋ฆฌ์
[javaScript] 2. ๋ณ์์ ์๋ฃํ / ํธ์ด์คํ (Hoisting) /์ฐ์ฐ์ ๋ณธ๋ฌธ
[javaScript] 2. ๋ณ์์ ์๋ฃํ / ํธ์ด์คํ (Hoisting) /์ฐ์ฐ์
๋ฆฌ์ ๐ซง 2026. 6. 24. 16:19๋ณ์์ ์๋ฃํ
๋์ ํ์ ์ธ์ด
- JS๋ ๋ณ์์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์
- ์คํ ์ค์ ๊ฐ์ ๋ฐ๋ผ์ ์๋์ผ๋ก ํ์ ์ด ๊ฒฐ์ ๋จ

์ดํด๊ฐ ์ ์๊ฐ๋๊น ์ข ๋ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด
1. ์ฌํ ๋น (๊ฐ ๋ฐ๊พธ๊ธฐ)
let์ผ๋ก ๋ง๋ ๋ณ์๋ ์ด๋ฆํ(๋ณ์๋ช )๋ ๊ทธ๋๋ก ๋๊ณ , ๊ทธ ์์ ๋ด๊ธด ๋ด์ฉ๋ฌผ(๊ฐ)๋ง ๋ฐ๊ฟ์น๊ธฐํ ์ ์๋ค. ์ด๊ฒ์ด ์ฌํ ๋น
- ์์: name2๋ผ๋ ์ด๋ฆ์ ํต์ ์ฒ์์๋ "์ต์ง์"์ ๋ด์๋ค๊ฐ, ๋์ค์ "๊น์๋ฏผ"์ผ๋ก ๋ฐ๊ฟ ๋ฃ๋ ๊ฒ๊ณผ ๊ฐ๋ค. ํต ์ด๋ฆ์ ๊ทธ๋๋ก name2 ์ ์ง
- ์ฝ๋
let name2 = "์ต์ง์"; // ํต ๋ง๋ค๊ธฐ
name2 = "๊น์๋ฏผ"; // ๋ด์ฉ๋ฌผ๋ง ๋ฐ๊ฟ (์ฑ๊ณต)
2. ์ฌ์ ์ธ (์ค๋ณต ๋ง๋ค๊ธฐ)
๋ฐ๋ฉด ์ฌ์ ์ธ์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋๊ฐ์ ์ด๋ฆํ๋ฅผ ๋ ๋ง๋๋ ํ์.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ฅผ "์ด๋ฆ์ด ๊ฒน์ณ์ ๋๊ฐ ์ง์ง์ธ์ง ํท๊ฐ๋ฆฌ๋๊น ์ ๋ผ!"๋ผ๋ฉฐ ๋ง์๋ฒ๋ฆฌ๋ ๊ฒ
- ์์: ์ด๋ฏธ name2๋ผ๋ ํต์ด ์๋๋ฐ, "๋๊ฐ์ด name2๋ผ๊ณ ์ด๋ฆ ๋ถ์ธ ํต์ ๋ ๋ง๋ค์ด์ค!"๋ผ๊ณ ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๊ณ ์ฅ๋จ.
let name2 = "์ต์ง์";
let name2 = "๊น์๋ฏผ"; // ์๋ฌ ๋ฐ์! (์ด๋ฏธ ์ด ์ด๋ฆ์ ๊ฐ์ง ๋ณ์๊ฐ ์๋๋ฐ ๋ ๋ง๋ค๋ ค๊ณ ํ๋ ์ฐจ๋จ)
์์ฝํ์๋ฉด
- ์ฌํ ๋น(name2 = "๊น์๋ฏผ"): ์ด๋ฏธ ์๋ ํต์ ๋ด์ฉ๋ฌผ์ ๋ฐ๊พธ๋ ๊ฒ (๊ฐ๋ฅ).
- ์ฌ์ ์ธ(let name2 = "๊น์๋ฏผ"): ๊ฐ์ ์ด๋ฆ์ ํต์ ๋ ํ๋ ๋ ๋ง๋ค๋ ค๊ณ ํ๋ ๊ฒ (๋ถ๊ฐ๋ฅ).
3.๋ค์ด๋ฐ ๊ท์น
- ์์ด๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋ฌธ์์ ์ซ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ํน์๋ฌธ์๋ ์ธ๋์ค์ฝ์ด(_)์ ๋ฌ๋ฌ($)๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ์ซ์๋ก ์์ํ๋ฉด ์ ๋จ
- ํค์๋๋ฅผ ๋ณ์๋ช ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ ๋จ
- ๋ณ์๋ช ·ํจ์๋ช → camelCase / class·id ์์ฑ๋ช → kebab-case
4.์๋ฃํ (Data Type)
- ์ฌ์ฏ ๊ฐ์ ์์ ํ์
๊ณผ ํ ๊ฐ์ Object ํ์
์ด ์์
- ์์: Number, String, Boolean, undefined, null, Symbol
- Object: Object, Array, Function …



< ํธ์ด์คํ (Hoisting)์ ์ฒ์ ์ ํ๋ฉด ๋งค์ฐ ํผ๋์ค๋ฌ์ด ์ด์ ?>
'๋์ด์ฌ๋ ค์ง๋ค'๋ ๋ง ๋๋ฌธ์ ์ฝ๋๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ด๋ํ๋ค๊ณ ์๊ฐํ๊ธฐ ์ฝ์ง๋ง,
์ฌ์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ๋จ๊ณ์์ ๋ฐ์ํ๋ '์ฌ์ ์์ '์ด๋ผ๊ณ ์ดํดํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ ํํ๋ค.
1. ํธ์ด์คํ ์ด ๋ฐ์ํ๋ ์ด์
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํํ๊ธฐ ์ ์,
๋จผ์ ์ ์ฒด ์ฝ๋๋ฅผ ํ์ผ๋ฉด์ var, let, const, function์ผ๋ก ์ ์ธ๋ ๋ณ์๋ ํจ์๋ฅผ ์ฐพ์์ ๋ฏธ๋ฆฌ '๊ธฐ์ต(๋ฉ๋ชจ๋ฆฌ ๋ฑ๋ก)'ํด ๋๋ค.
์ด ์์ ๋๋ฌธ์ ์ฝ๋ ์คํ ์์ ์์๋ ์ ์ธ๋ฌธ์ด ๋ง์น ์๋ก ์ฌ๋ผ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋์ํ๊ฒ ๋๋ ๊ฒ.
2. ์ var๋ ์ ์ฐ๊ณ let, const๋ฅผ ์ฐ๋?
์ด ๋์ ํธ์ด์คํ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ
var์ ๊ฒฝ์ฐ (์์ธก ๋ถ๊ฐ๋ฅ)
var๋ ์ ์ธ๊ณผ ๋์์ undefined๋ผ๋ ๊ฐ์ผ๋ก ์ด๊ธฐํ๊น์ง ํด๋ฒ๋ฆฐ๋ค.

์ด๋ฌ๋ฉด ๊ฐ๋ฐ์๊ฐ ์ค์๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ ์ ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ์ ๋์ ๋์ค์ ํฐ ๋ฒ๊ทธ๊ฐ ๋ฉ๋๋ค.
let, const์ ๊ฒฝ์ฐ (์์ ํจ)
let๊ณผ const๋ ํธ์ด์คํ ์ ๋๋ค.
ํ์ง๋ง ์ ์ธ๋ฌธ ์์น์ ๋๋ฌํ๊ธฐ ์ ๊น์ง "์ด ๋ณ์๋ ์กด์ฌํ์ง๋ง ์์ง ์ฌ์ฉํ ์ ์๋ค"๋ผ๋ ์ํ(TDZ, ์ผ์์ ์ฌ๊ฐ์ง๋)์ ๊ฐ๋๋ค.

์ด ๋๋ถ์ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ ์ ์ฐ๋ ค๊ณ ํ๋ฉด ๋ฐ๋ก ์๋ฌ๋ฅผ ๋์์ฃผ์ด, ๊ฐ๋ฐ์๊ฐ ์ค์๋ฅผ ๋ฐ๋ก ์ก์ ์ ์๊ฒ ํด์ค
3. "์ ์ธ๋ง ๋์ด์ฌ๋ฆฌ๊ณ ํ ๋น์ ๊ทธ๋๋ก ๋จ๋๋ค"๋ ์๋ฏธ
์ด ๋ถ๋ถ์ด ๊ฐ์ฅ ์ค์ํ๋ฐ, ์ ์ธ(๋ณ์์ ์ด๋ฆ๋ง ๋ง๋๋ ๊ฒ)๊ณผ ํ ๋น(๊ฐ์ ๋ฃ๋ ๊ฒ)์ ๋ถ๋ฆฌํด์ ๋ด๋ณธ๋ค.

์ปดํจํฐ๊ฐ ์ฝ์ ๋๋ ์ค์ ๋ก ์ด๋ ๊ฒ ๋ฐ๋ ๊ฒ์ฒ๋ผ ์๋
์์ฝ
- ํธ์ด์คํ : ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ ์์ง์ด ์ ์ธ๋ฌธ์ ๋จผ์ ์ฝ์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ฑ๋กํ๋ ๊ฒ.
- var: ์ ์ธ๊ณผ ํจ๊ป undefined๋ก ์ด๊ธฐํ๊น์ง ํด๋ฒ๋ ค์, ์ ์ธ ์ ์๋ ๊ฐ์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ ์ํํจ.
- let/const: ํธ์ด์คํ ์ ๋์ง๋ง ์ด๊ธฐํ๋ ์ ํด์ค. ๋ฐ๋ผ์ ์ ์ธ ์ ์ ์ฐ๋ฉด ์๋ฌ๊ฐ ๋์ ์์ ํจ.
์ฒ์ ๋ฐฐ์ฐ์ค ๋๋ "์ ์ธ๋ฌธ(let, const, function)์ ๋ฌด์กฐ๊ฑด ์ฝ๋ ๊ฐ์ฅ ์์ชฝ์์ ์์ฑํ๋ ์ต๊ด์ ๋ค์ด์"๊ณ ์๊ฐํ๋ฉด ํธ์ด์คํ ์ผ๋ก ์ธํ ๋ฌธ์ ๋ฅผ ์๋ฒฝํ ํผํ ์ ์๋ค.

- var์ ๋ฌธ์ ์ :
- ์ ์ธ ์ ์ฐธ์กฐ: ์๋ฌ ์์ด undefined๊ฐ ์ถ๋ ฅ๋์ด ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
- ์ฌ์ ์ธ ๊ฐ๋ฅ: ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ณ์๋ฅผ ๋ค์ ๋ง๋ค์ด๋ ์๋ฌ๊ฐ ๋์ง ์์ ํฐ ํผ๋์ ์ค๋ค.
- let / const ์ ์ฅ์ :
- TDZ(Temporal Dead Zone): ๋ณ์ ์ ์ธ๋ฌธ์ด ์คํ๋๊ธฐ ์ ๊น์ง๋ ๋ณ์์ ์ ๊ทผํ๋ ๊ฒ์ ์ฒ ์ ํ ๋ง๋๋ค.
- ๋๋ถ์ "๋ณ์๋ฅผ ์ ์ธํ์ง ์๊ณ ์ฌ์ฉํ๋ค"๋ ์ฌ์ค์ ๋ฐ๋ก ์ ์ ์์ด ๋งค์ฐ ์์
- ์ฌ์ ์ธ ๋ถ๊ฐ: ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ณ์๋ฅผ ๋ค์ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ์ฆ์ ์๋ฌ๋ฅผ ๋์ ์ค์๋ฅผ ๋ฐฉ์ง

์ฐ์ฐ์๋ ๊ฑฐ๋ญ์ ๊ณฑ(Exponentiation)์ ๊ณ์ฐํ๋ ๊ฒ
| ์ฐ์ฐ์ | ๋ช ์นญ | ์์ | ๊ฒฐ๊ณผ |
| + | ๋ํ๊ธฐ | 10 + 3 | 13 |
| - | ๋นผ๊ธฐ | 10 - 3 | 7 |
| * | ๊ณฑํ๊ธฐ | 10 * 3 | 30 |
| / | ๋๋๊ธฐ | 10 / 3 | 3.333... |
| % | ๋๋จธ์ง | 10 % 3 | 1 |
| ** | ๊ฑฐ๋ญ์ ๊ณฑ | 2 ** 10 | 1024 |
๋น๊ต ์ฐ์ฐ์
๋ ๊ฐ์ ๊ฐ(ํผ์ฐ์ฐ์)์ ๋น๊ตํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ฐธ(true)์ธ์ง ๊ฑฐ์ง(false)์ธ์ง๋ฅผ ํ๋ณํ๋ ์ฐ์ฐ์
์กฐ๊ฑด๋ฌธ์ด๋ ๋ฐ๋ณต๋ฌธ์์ ํน์ ์กฐ๊ฑด์ ๊ฒ์ฌํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
| ์ฐ์ฐ์ | ์๋ฏธ | ์ค๋ช |
| == | ๋๋ฑ ์ฐ์ฐ์ | ๋ ๊ฐ์ด ๊ฐ์์ง ๋น๊ต (ํ์ ์ด ๋ค๋ฅด๋ฉด ๋ณํ ํ ๋น๊ต) |
| === | ์ผ์น ์ฐ์ฐ์ | ๋ ๊ฐ๊ณผ ํ์ ์ด ๋ชจ๋ ๊ฐ์์ง ๋น๊ต (๊ถ์ฅ) |
| != | ๋ถ๋ฑ ์ฐ์ฐ์ | ๋ ๊ฐ์ด ๋ค๋ฅธ์ง ๋น๊ต (ํ์ ์ด ๋ค๋ฅด๋ฉด ๋ณํ ํ ๋น๊ต) |
| !== | ๋ถ์ผ์น ์ฐ์ฐ์ | ๋ ๊ฐ ๋๋ ํ์ ์ด ๋ค๋ฅธ์ง ๋น๊ต |
| > | ํฌ๋ค | ์ผ์ชฝ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๊ฐ๋ณด๋ค ํฐ์ง ํ์ธ |
| < | ์๋ค | ์ผ์ชฝ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๊ฐ๋ณด๋ค ์์์ง ํ์ธ |
| >= | ํฌ๊ฑฐ๋ ๊ฐ๋ค | ์ผ์ชฝ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ง ํ์ธ |
| <= | ์๊ฑฐ๋ ๊ฐ๋ค | ์ผ์ชฝ ๊ฐ์ด ์ค๋ฅธ์ชฝ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ง ํ์ธ |
ํต์ฌ ์ฃผ์์ฌํญ: == vs ===
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ ๋น๊ตํ ๋๋ === (์ผ์น ์ฐ์ฐ์)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
==๋ ๋น๊ต ๊ณผ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ํ์ ์ ๋ณํ(Type Coercion)ํ๊ธฐ ๋๋ฌธ์ ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ
console.log(5 == '5'); // true (ํ์ ์ ๋ค๋ฅด์ง๋ง ๊ฐ๋ง ๋น๊ต)
console.log(5 === '5'); // false (๊ฐ์ ๊ฐ์ง๋ง ํ์ ์ด ์ซ์์ ๋ฌธ์์ด๋ก ๋ค๋ฆ)
console.log(0 == false); // true
console.log(0 === false); // false
๋น๊ต ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ ํญ์ ๋ถ๋ฆฌ์ธ(Boolean) ๋ฐ์ดํฐ ํ์ ์ธ true ๋๋ false๋ก ๋ฐํ๋๋ค.
'๊ฐ๋ฐ์ ํธ์์ธ > Front' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [javaScript] 5.๋ฐ๋ณต๋ฌธ (0) | 2026.06.26 |
|---|---|
| [javaScript] 4. ์กฐ๊ฑด๋ฌธ (0) | 2026.06.26 |
| [javascript] 1. JS๊ฐ์์ ์คํ ํ๊ฒฝ /๋ฉ์๋ ์ค๋ฒ๋ก๋ฉ(Method Overloading) (0) | 2026.06.24 |
| [JavaScript] 3. ํ๋ณํ (4) | 2026.06.24 |
| CSS ์ฝ๋์ ์น์ฌ์ดํธ์ ๊ตฌ์กฐ (0) | 2026.06.24 |