๋ณ€์ˆ˜

๋‹จ๋‹จยท2025๋…„ 4์›” 29์ผ

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

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

๐Ÿ“ JavaScript ๋ณ€์ˆ˜ - var, let, const ์ •๋ฆฌ

1. var

  • ES5๊นŒ์ง€ ์‚ฌ์šฉ๋œ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ๋ฒ•
  • ์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ
  • ํ˜ธ์ด์ŠคํŒ… ๋ฐœ์ƒ (์„ ์–ธ๋งŒ ์œ„๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง, ์ดˆ๊ธฐํ™”๋Š” ์•ˆ ๋จ)
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค. ({} ์ค‘๊ด„ํ˜ธ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ํ•จ์ˆ˜ ๋‹จ์œ„๋กœ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง)

๐Ÿ“Œ ์˜ˆ์‹œ

console.log(a); // undefined (ํ˜ธ์ด์ŠคํŒ…)
var a = 5;
console.log(a); // 5

function test() {
  if (true) {
    var x = 10;
  }
  console.log(x); // 10 (if๋ฌธ ๋ธ”๋ก ๋ฌด์‹œํ•˜๊ณ  ์ ‘๊ทผ ๊ฐ€๋Šฅ)
}
test();								

2. let

  • ES6(2015)๋ถ€ํ„ฐ ๋“ฑ์žฅ

  • ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€

  • ํ˜ธ์ด์ŠคํŒ…์€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ดˆ๊ธฐํ™” ์ „์— ์ ‘๊ทผํ•˜๋ฉด ์—๋Ÿฌ (Temporal Dead Zone)

  • ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค. ({} ์•ˆ์—์„œ๋งŒ ์œ ํšจ)

๐Ÿ“Œ ์˜ˆ์‹œ

let b = 10;
b = 20; // ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

function testLet() {
  if (true) {
    let y = 30;
    console.log(y); // 30
  }
  console.log(y); // ReferenceError (๋ธ”๋ก ์Šค์ฝ”ํ”„)
}
testLet();

3. const

  • ES6๋ถ€ํ„ฐ ๋“ฑ์žฅ

  • ๊ฐ’ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€ (์ดˆ๊ธฐํ™” ์ดํ›„ ๊ฐ’ ๋ณ€๊ฒฝ ๊ธˆ์ง€)

  • ํ˜ธ์ด์ŠคํŒ…์€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์ ‘๊ทผ ์‹œ ์—๋Ÿฌ

  • ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ง„๋‹ค.

๐Ÿ“Œ ์˜ˆ์‹œ

const c = 100;
c = 200; // TypeError: Assignment to constant variable.

const arr = [1, 2, 3];
arr.push(4); // ๊ฐ€๋Šฅ (์ฐธ์กฐ ์ฃผ์†Œ๋Š” ๊ทธ๋Œ€๋กœ, ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ)

const obj = { name: 'John' };
obj.name = 'Jane'; // ๊ฐ€๋Šฅ

๐Ÿ“š var, let, const ๋น„๊ตํ‘œ

ํŠน์ง•varletconst
์„ ์–ธ ์‹œ์ ๋Œ์–ด์˜ฌ๋ฆผ(hoisting)๋Œ์–ด์˜ฌ๋ฆผ, TDZ ๋ฐœ์ƒ๋Œ์–ด์˜ฌ๋ฆผ, TDZ ๋ฐœ์ƒ
์Šค์ฝ”ํ”„ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ธ”๋ก ์Šค์ฝ”ํ”„๋ธ”๋ก ์Šค์ฝ”ํ”„
์žฌ์„ ์–ธ๊ฐ€๋Šฅ๋ถˆ๊ฐ€๋ถˆ๊ฐ€
์žฌํ• ๋‹น๊ฐ€๋Šฅ๊ฐ€๋Šฅ๋ถˆ๊ฐ€ (๋‹จ, ๊ฐ์ฒด/๋ฐฐ์—ด ๋‚ด๋ถ€ ๋ณ€๊ฒฝ์€ ๊ฐ€๋Šฅ)

โœ๏ธ ์ •๋ฆฌ

  • var๋Š” ์ด์ œ ์‚ฌ์šฉ ์ง€์–‘!

  • ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด๋ฉด let

  • ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด๋ฉด const๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ.

profile
๋‹จ๋‹จํ•œ ๊ฐœ๋ฐœ์ž

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