2 minute read

day : 2022.02.16

javascript์—๋Š” var, let, const ์˜ ์„ธ๊ฐ€์ง€ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์ด ์กด์žฌํ•œ๋‹ค.

es6์ด์ „์—๋Š” var๋งŒ ์žˆ์—ˆ์ง€๋งŒ, es6๋ถ€ํ„ฐ๋Š” let, const ํ‚ค์›Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๊ณ , var์ด ์•„๋‹Œ ์ด๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์™œ let, const์˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ• ๊นŒ์š”? ์ด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” var๊ณผ let, const์˜ ์ฐจ์ด๋ฅผ ์•Œ๋ฉด ์ด์œ ๋ฅผ ์•Œ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ์‹์˜ ์ฐจ์ด

var์˜ ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

var name = 'sumi';

var name = 'sumi2';

์™€ ๊ฐ™์ด ๋ณ€์ˆ˜ ์„ ์–ธ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•จ์—๋„ ์—๋Ÿฌ๊ฐ€ ๋œจ์ง€์•Š๊ณ  ๋‘๋ฒˆ์งธ ๊ฐ’์œผ๋กœ name์˜ ๊ฐ’์ด ๋ฎ์–ด์”Œ์›Œ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์—์„œ๋Š” ์–ด๋””์—์„œ name์ด๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ๋ณผ์ˆ˜์žˆ์–ด ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง€๋ฉด ๋ณ€์ˆ˜๊ฐ€ ์–ด๋””์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๊ณ  ์ˆ˜์ •๋˜์—ˆ๋Š”์ง€ ์•Œ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์งˆ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ es6์—์„œ ์ถ”๊ฐ€๋œ ํ‚ค์›Œ๋“œ๊ฐ€ let, const์ž…๋‹ˆ๋‹ค.

let, const๋กœ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ๋‘๋ฒˆ ์„ ์–ธํ•˜๋ฉด var๊ณผ ๋‹ฌ๋ฆฌ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

let name = 'sumi'

let name = 'sumi2'; //error

๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์„ ์–ธ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๋‹ค๋Š” ์ ์—์„œ let๊ณผ const๋Š” ๊ณตํ†ต์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ let์€ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๊ณ  const๋Š” ๋ณ€์ˆ˜ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

let name = 'sumi';
name = 'sumi2' //ok

const name2 = 'sumi';
name2 = 'sumi2' //error

2. Scope(๋ฒ”์œ„)์˜ ์ฐจ์ด

scope๋Š” ์‹๋ณ„์ž(๋ณ€์ˆ˜๋ช… ๋“ฑ)์˜ ์œ ํšจ๋ฒ”์œ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์„ ์–ธ๋œ ์œ„์น˜์— ๋”ฐ๋ผ ์œ ํšจ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š”๋ฐ,

  • ์ „์—ญ ์Šค์ฝ”ํ”„ : ์ „์—ญ์— ์„ ์–ธ๋˜์–ด, ์–ด๋””์—์„œ๋“  ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜
  • ์ง€์—ญ ์Šค์ฝ”ํ”„ : ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์„ ์–ธ๋˜์–ด, ์ž์‹ ์˜ ์ง€์—ญ scope์™€ ๊ทธ ํ•˜์œ„ scope์—์„œ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜ ์œ„์˜ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆˆ๋‹ค.

js์—์„œ๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ธ”๋Ÿญ์ด ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ๋งŒ๋“ค๊ณ , ์ด๋ฅผ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ผ๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋ธ”๋Ÿญ๋งŒ์„ ์ง€์—ญ ์Šค์ฝ”ํ”„๋กœ ์ธ์ •ํ•˜๊ณ , ์ด๋ฅผ ํ•จ์ˆ˜๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ผ๊ณ  ํ•œ๋‹ค.

  • var : ํ•จ์ˆ˜ ์ฝ”๋“œ ๋ธ”๋ก๋งŒ์„ ์ง€์—ญ์Šค์ฝ”ํ”„๋กœ ์ธ์ •
  • let, const : ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์›

์ „์—ญ๋ณ€์ˆ˜๋กœ ์ธํ•ด ์žฌํ• ๋‹น์ด ์ผ์–ด๋‚˜๊ฑฐ๋‚˜ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์ธํ•ด ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ณ€์ˆ˜ ์ค‘์ฒฉ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜ ๋•Œ๋ฌธ์— ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์›ํ•˜๋Š” let, const ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

3. Hoisting(ํ˜ธ์ด์ŠคํŒ…)

js์—์„œ hoisting์ด๋ž€, ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์„ ์–ธ ์ „์— ๋ฏธ๋ฆฌ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. var๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ… ์‹œ undefined๋กœ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜์ง€๋งŒ, let, const๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…์‹œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š๋Š”๋‹ค.

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์„ ์–ธ๋œ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์€ ๋ชจ๋‘ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค

ํ•˜์ง€๋งŒ varํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค๊ณผ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋“ค๋งŒ ์„ ์–ธ ์ด์ „์— ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ •๋ฆฌ

var

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ์ด ๊ฐ€๋Šฅ, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ-> ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ• ์ˆ˜ ์žˆ๋‹ค.
  • ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์› -> ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ var๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋“ค์€ ๋ชจ๋‘ ์ „์—ญ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.
  • ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ ์ „์— ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋ฉด undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค

let

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„

const

  • ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ
  • ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„
  • ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ! **์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋™์‹œ์— ์ง„ํ–‰ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. **
  • ๋‹จ, ์žฌํ• ๋‹น์˜ ๊ฒฝ์šฐ number์™€ ๊ฐ™์€ ์›์‹œ ๊ฐ’์€ ์žฌํ• ๋‹น์ด ์•ˆ๋˜์ง€๋งŒ, ๊ฐ์ฒด๋Š” ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ์žฌํ• ๋‹น์„ ๊ธˆ์ง€ํ•˜๋Š” ๊ฒƒ์ด const๊ฐ์ฒด๋Š” โ€˜๋ถˆ๋ณ€โ€™์ด๋ผ๋Š” ๋ง๊ณผ ๊ฐ™์€๋ง์ด ์•„๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„๋Š” ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฏ€๋กœ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

๋ณ€๊ฒฝํ•˜์ง€์•Š๋Š” ๊ฐ’(์ƒ์ˆ˜)์ด๋ผ๋ฉด const๋ฅผ ์ด์šฉํ•ด ์„ ์–ธ, ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜ ์žฌํ• ๋‹น์ด ์žˆ์„๊ฒฝ์šฐ let๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•˜์ž.

Tags:

Categories:

Updated: