const , let, var์˜ ์ฐจ์ด
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๋””์ง€ํ„ธ ๊ฟ€ํŒ

const , let, var์˜ ์ฐจ์ด

by ์ผ์ƒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค 2022. 5. 20.

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

1. const

  • ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ์ •์˜
  • ์žฌ์„ ์ธ ๋ถˆ๊ฐ€, ์žฌํ• ๋‹น ๋ถˆ๊ฐ€
  • ์ƒ์ˆ˜

2. let

  • ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€
  • ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • ์ผ๋ฐ˜ ๋ณ€์ˆ˜
  • ์ดˆ๊ธฐํ™” ์ง„ํ–‰ X error => name is not defined

3. var

  • ์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ
  • ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • ์ผ๋ฐ˜ ๋ณ€์ˆ˜
  • ์ •์˜ ๋‚ด๋ฆฌ๊ธฐ ์ „์˜ ๋‹ค undefined ๊ฐ’์œผ๋กœ ์ •์˜
๋ฐ˜์‘ํ˜•

4. let๊ณผ var์˜ ์ฐจ์ด

โ€‹๊ฒ€์ƒ‰ํ•ด ๋ณธ ๊ฒฐ๊ณผ๋กœ๋Š” var๋Š” ๋”์ด์ƒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ง€์–‘ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด์œ ๋Š” var๋Š” ํ•จ์ˆ˜ ๋‚ด์— ๋‹ค์ค‘ ์„ ์–ธ ์‹œ ์˜ค๋ฅ˜ ์—†์ด ํ›„์ž์— ์„ ์–ธํ•œ ๋ณ€์ˆ˜ ๊ฐ’์ด ์‚ฌ์šฉ๋˜๊ณ , let์€ ํ•จ์ˆ˜ ๋‚ด์— ๋‹ค์ค‘ ์„ ์–ธ ์‹œ '์ด๋ฏธ ์„ ์–ธํ•œ ๋ณ€์ˆ˜'๋ผ๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ let์„ ์“ฐ์ž๊ณ  ๋งํ•˜๋Š” ์ถ”์„ธ์ด์ง€๋งŒ ๋‚˜์˜ ๊ฐœ์ธ์ ์ธ ์ƒ๊ฐ์œผ๋ก  ์ž๊ธฐ๊ฐ€ ์“ฐ๋Š” ์ฝ”๋“œ๋ฅผ ์ž˜ ๊ธฐ์–ต๋งŒ ํ•œ๋‹ค๋ฉด var๋„ ๋ฌธ์ œ ๋  ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํŠนํžˆ๋‚˜ for ๋ฌธ์— ์“ฐ๋Š” i,j ๊ตฌ๋ถ„์ž์— ์‚ฌ์šฉ์ด ์ต์ˆ™ํ•ด์ ธ๋ฒ„๋ ค์„œ ๋ฒ„๋ฆด ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ญ”๊ฐ€ ์ข€ ๋” ํ™•์‹คํ•˜๊ฒŒ ๋ฌธ์ œ ๋˜๋Š” ์ ์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ‘์ž๊ธฐ ๋ฒ„ํผ ํฌ๊ธฐ์— ์žˆ์–ด์„œ ์ฐจ์ด๋Š” ์žˆ์„์ง€ ์˜๋ฌธ์ ์ด ์ƒ๊ฒผ๋‹ต๋‹ˆ๋‹ค.

function test()
{
    var test1 = '์•„';
    let test2 = '์•„';

    console.log(" size ๋น„๊ต " );

    console.log(" >> var ", Buffer.byteLength(test1));
    console.log(" >> let ", Buffer.byteLength(test2));

}โ€‹
 }

๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„์ฃผ ์˜ค๋ž˜์ „ ๊ธฐ์–ต์œผ๋กœ๋Š” ๋ณดํ†ต ํ•œ๊ธ€์€ 2byte์ธ๋ฐ 3byte์ด๋ผ๋Š” ๊ธธ์ด๊ฐ€ ๋‚˜์˜จ ๊ฑธ๊นŒ์š”?

๊ทธ๋Ÿด ๋• ์„ค์ •๋œ ์บ๋ฆญํ„ฐ ์…‹์„ ํ™•์ธํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค. visual code ์˜ค๋ฅธ์ชฝ ํ•˜๋‹จ์— ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์™ธ์—๋„ ์„ค์ •์—์„œ๋„ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

UTF-8 ํƒ€์ž…์„ ์‚ฌ์šฉ ์ค‘์ด์–ด์„œ 3BYTE๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค. visual code์™€ nodejs๋ฅผ ์ฒ˜์Œ ์“ฐ์ง€๋งŒ ์›๋ฆฌ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋˜์งš์–ด๋ณด๋‹ˆ ์žฌ๋ฐŒ๊ธด ํ•˜๋‹จ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. ๋Œ€ํ•™๊ต ์‹œ์ ˆ๋กœ ๋Œ์•„๊ฐ„ ๊ธฐ๋ถ„์ด ๋“ญ๋‹ˆ๋‹ค. ๋ฐ‘๋„ ๋๋„ ์—†์ด ๊ถ๊ธˆํ•˜๊ฑฐ๋‚˜ ์—‰๋šฑํ•˜๊ฑฐ๋‚˜ ๋ฉ์ฒญํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜๊ฐ™์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๊ธธ ๋ฐ”๋ผ๋Š” ๋งˆ์Œ์œผ๋กœ ๋„์ ์—ฌ ๋ด…๋‹ˆ๋‹ค.

๋Œ“๊ธ€