๐Ÿธ [JavaScript] let, const ํ‚ค์›Œ๋“œ

hnyoojinยท2024๋…„ 9์›” 6์ผ

๐Ÿธ JS ๋งˆ์Šคํ„ฐ ๋˜๊ธฐ

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

์šฐ๋ฆฌ๋Š” ์ด์ œ var ํ‚ค์›Œ๋“œ์˜ ๋ฌธ์ œ์ ์„ ์•Œ๊ณ ์žˆ๋‹ค.

ES6๊นŒ์ง€๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ด์—ˆ์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

  1. ์ค‘๋ณต ์„ ์–ธ
  2. ํ•จ์ˆ˜ level scope
  3. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

var์˜ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ let, const ํ‚ค์›Œ๋“œ,
๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ level scope๊ฐ€ ์•„๋‹Œ block level scope ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.


let

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๊ธˆ์ง€

    ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์ด ๊ธˆ์ง€๋œ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ค‘๋ณต ์„ ์–ธํ•˜๋ฉด, SyntaxError ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • block level scope

    block level scope๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  code block ์„ ์ง€์—ญ scope๋กœ ์ธ์ •ํ•œ๋‹ค.

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

    let์€, ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
    var์€ runtime ์ด์ „์— ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ–ˆ๋‹ค.
    let์˜ ๊ฒฝ์šฐ, ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ณ„๋„๋กœ ์ง„ํ–‰๋œ๋‹ค.
    ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์‹คํ–‰ ์ด์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๋ฉด, ReferenceError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

[scope์˜ ์‹œ์ž‘ ~ ์ดˆ๊ธฐํ™” ์ง€์ ]์—์„œ๋Š”, ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ด ๊ตฌ๊ฐ„์„ ์ผ์‹œ์  ์‚ฌ๊ฐ์ง€๋Œ€ TDZ(Temporal Dead Zone)๋ผ๊ณ  ํ•œ๋‹ค.


๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์‹ค, ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค.

JavaScript๋Š” ES6์—์„œ ๋„์ž…ํ•œ ๊ฒƒ๋“ค์„ ํฌํ•จํ•œ ๋ชจ๋“  ์„ ์–ธ๋ฌธ์„ ํ˜ธ์ด์ŠคํŒ…ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ let, const, class์˜ ๊ฒฝ์šฐ, ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.


let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ๋ณ€์ˆ˜๋Š”, ์ „์—ญ ๊ฐ์ฒด์˜ property์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.


const

์ƒ์ˆ˜ ์„ ์–ธ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์ด๋‹ค.
(๋ฐ˜๋“œ์‹œ ์ƒ์ˆ˜๋งŒ์„ ์œ„ํ•œ ๊ฑด ์•„๋‹ˆ๋‹ค)

  • ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”
    const ํ‚ค์›Œ๋“œ๋Š”, ์„ ์–ธ๊ณผ ๋™์‹œ์— ๋ฐ˜๋“œ์‹œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•˜๋ฉฐ, ๊ทธ๋Ÿฌ์ง€ ์•Š์œผ๋ฉด SyntaxError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  let๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ block level scope๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.

  • ์žฌํ• ๋‹น ๊ธˆ์ง€

  • ์ƒ์ˆ˜
    const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ์›์‹œ๊ฐ’ ํ• ๋‹น ํ›„ ๊ฐ’ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
    ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ƒ์ˆ˜๋Š” ์žฌํ• ๋‹น์ด ๊ธˆ์ง€๋œ ๋ณ€์ˆ˜์ธ ๊ฒƒ์ด๋‹ค.

const ํ‚ค์›Œ๋“œ์™€ ๊ฐ์ฒด

๊ทธ๋Ÿฐ๋ฐ const๋ณ€์ˆ˜์— ๊ฐ์ฒด๋ฅผ ํ• ๋‹น์„ ํ–ˆ๋‹ค๋ฉด?

๊ฐ’ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฐ์ฒด๋Š” ์žฌํ• ๋‹น์„ ํ•˜์ง€ ์•Š์•„๋„, ์ง์ ‘ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ ‡๋“ฏ const๋Š” '๋ถˆ๋ณ€'ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฐ’์˜ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋ฟ์ด๋‹ค.


๊ทธ๋ž˜์„œ ๋ญ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋ƒ! ํ•˜๋ฉด,,,,

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” const๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์žฌํ• ๋‹น์ด ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ let์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค๊ณ  ํ•œ๋‹ค!

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