๐Ÿ‘‰๐Ÿป JS : ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ var, let, const ๋น„๊ต

sebinnnnnยท2023๋…„ 1์›” 2์ผ
0

JavaScript ๊ธฐ์ดˆ

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

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹ let, const, var ํ‚ค์›Œ๋“œ์˜ ์ฐจ์ด์ ๊ณผ ํ˜ธ์ด์ŠคํŒ… ๊ฐœ๋… ]

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๊ฐ€ ๊ถ๊ธˆํ•œ ์ ์ด ์ƒ๊ฒผ๋‹ค.
โ€˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์—๋Š” let, const, var ์ด๋ ‡๊ฒŒ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋“ค์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์„๊นŒ? โ€˜
๊ฐ•์˜๋ฅผ ๋“ฃ๋‹ค ๋ณด๋ฉด ๋Œ€๋ถ€๋ถ„์ด โ€œ var์€ ์˜ˆ์ „ ์„ ์–ธ ๋ฐฉ์‹์ด๋‹ˆ ์ตœ๋Œ€ํ•œ let์„ ์‚ฌ์šฉํ•˜์„ธ์š” โ€œ๋ผ๊ณ  ๋ง์”€ํ•ด ์ฃผ์‹œ๋Š”๋ฐ, ๋‹จ์ง€ ์˜ˆ์ „ ๋ฐฉ์‹์ด๋ผ๊ณ  ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ํ•˜๋Š” ๊ฒŒ ๋งž๋Š” ๊ฑธ๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.
์‚ฌ์‹ค, ์•„์ง๋„ ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ ๋Œ€๋žต โ€˜ ์•„โ€ฆ ๊ทธ๋ž˜์„œ ๊ทธ๋žฌ๊ตฌ๋‚˜โ€ฆโ€™ ์ •๋„์˜ ์ˆ˜์ค€์€ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋‚˜์˜ ์ดํ•ด ๋ฐฉ์‹์ด ๋‹ค๋ฅธ ์ด๋“ค์—๊ฒŒ๋„ ์กฐ๊ธˆ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ํ•˜๊ณ  ๋‚จ๊ฒจ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

๐Ÿ’ก var ์„ ์–ธ ๋ฐฉ์‹

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ดˆ๊ธฐ์—๋Š” var ๋ฐฉ์‹์œผ๋กœ๋งŒ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ๋งŽ์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„ํ–‰๋˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜ ์„ ์–ธ 2๊ฐœ๊ฐ€ ๋” ์ƒ๊ฒจ๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ, var์€ ์ตœ๊ทผ 2๊ฐœ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์— ๋น„ํ•ด ๋ฌธ์ œ๊ฐ€ ๋งŽ์€ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์ด ๋˜์—ˆ๋‹ค.

  • ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค?
    : let๊ณผ const๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ ๊ฐ€์žฅ ํฐ ๊ณ„๊ธฐ์ผ ๊ฒƒ์ด๋‹ค.
    ๋ฐ”๋กœ, var์€ ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด๋‹ค. ํ…Œ์ŠคํŠธ ์šฉ์œผ๋กœ์„œ๋Š” ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋งŒ์•ฝ ์ฝ”๋“œ๊ฐ€ ํ•˜์—ผ์—†์ด ๊ธธ์–ด์ง€๊ณ  ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์งš์–ด๋ณด๊ธฐ๊ฐ€ ํž˜๋“ค ๋•Œ, ์ค‘๋ณต ์„ ์–ธ์œผ๋กœ ์ธํ•œ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ์•ผ๋ง๋กœ ๋ฉ˜๋ถ• ๊ทธ ์ž์ฒด์ผ ๊ฒƒ์ด๋‹ค. ์ด์ฒ˜๋Ÿผ ์ฝ”๋“œ๊ฐ€ ์งง๊ณ  ๊ฐ„๊ฒฐํ•  ๋•Œ๋Š” ํฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ฒ ์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ค‘๋ณต์œผ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ์•„์ฃผ ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
    ( ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ๋˜‘๊ฐ™์€ ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ์ €์งˆ๋ฅผ ์ˆ˜ ์žˆ์œผ๋‹ˆโ€ฆ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ•์˜๋“ค์—์„œ var ์‚ฌ์šฉ์„ ์ž์ œํ•˜๋ผ๊ณ  ํ•˜์‹  ๊ฒŒ ์•„๋‹๊นŒ ์‹ถ๋‹คโ€ฆ)

  • var์˜ ํ˜ธ์ด์ŠคํŒ… ๋ฌธ์ œ
    : ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ํ˜ธ์ด์ŠคํŒ…์€ ์Šค์ฝ”ํ”„์˜ ์„ ๋‘๋กœ ์˜ฎ๊ธด ๊ฒƒ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ์•„์ง ์„ ์–ธํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ถœ๋ ฅ ํ›„์— ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    โ‡’ var ์„ ์–ธ์ด ์Šค์ฝ”ํ”„์˜ ์„ ๋‘๋กœ ์˜ฌ๋ผ๊ฐ”๊ธฐ ๋•Œ๋ฌธ!

    console.log(one); // undefined -> ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค!
    
    var one;
    console.log(one); // undefined
    
    one = 7; // ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹น
    console.log(one); // 7

    ์ด๋ ‡๊ฒŒ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š” var๊ณผ ๋‹ค๋ฅด๊ฒŒ, let๊ณผ const๋Š” ์„ ์–ธ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šด๋‹ค.

    console.log(two); // ReferenceError: foo is not defined -> ์—๋Ÿฌ ๋ฉ”์‹œ์ง€
    
    let two; // ๋ณ€์ˆ˜ ์„ ์–ธ
    console.log(two); // undefined
    
    two = 7; // ๊ฐ’ ํ• ๋‹น
    console.log(two); // 7

= ๋”ฐ๋ผ์„œ var ์„ ์–ธ ๋ฐฉ์‹์˜ ์ค‘๋ณต ์„ ์–ธ ๋ฌธ์ œ์™€ ํ˜ธ์ด์ŠคํŒ…์˜ ์ด์œ ๋กœ var์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์˜ˆ์ „ ์„ ์–ธ ๋ฐฉ์‹์˜ var ๋Œ€์‹  let๊ณผ const๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๐Ÿ’ก ๊ทธ๋ ‡๋‹ค๋ฉด, ์–ด๋–ค ๊ฒฝ์šฐ์— let์„ ํ˜น์€ const๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ?

-> ๋‹คํ–‰ํžˆ๋„, let๊ณผ const ๊ฐ๊ฐ์˜ ์—ญํ• ์€ ํ™•์‹คํ•˜๋‹ค.

let์€ ์ค‘๋ณต ์„ ์–ธ์€ ์•ˆ ๋˜์ง€๋งŒ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•˜์ง€๋งŒ, const๋Š” ์ค‘๋ณต ์„ ์–ธ๊ณผ ์žฌํ• ๋‹น ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

(1) let = ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ / ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
(2) const = ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ / ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

๋”ฐ๋ผ์„œ, ๋ณ€ํ•˜๋Š” ๊ฐ’์— ๋Œ€ํ•ด์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ๋Š” let์„, ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’ ์ฆ‰ ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ๋Š” const๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

profile
๐Ÿ  ๋ธ”๋กœ๊ทธ ์ด์ „ ์ค‘ โ†’ https://medium.com/@sebinndev

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