day : 2022.02.16
javascript์๋ var, let, const ์ ์ธ๊ฐ์ง ๋ณ์ ์ ์ธ ๋ฐฉ์์ด ์กด์ฌํ๋ค.
es6์ด์ ์๋ var๋ง ์์์ง๋ง, es6๋ถํฐ๋ let, const ํค์๋๊ฐ ์ถ๊ฐ๋์๊ณ , var์ด ์๋ ์ด๋ฅผ ์ด์ฉํด ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
์ let, const์ ์ฌ์ฉ์ ๊ถ์ฅํ ๊น์?
์ด๋ฅผ ์๊ธฐ ์ํด์๋ var๊ณผ let, const์ ์ฐจ์ด๋ฅผ ์๋ฉด ์ด์ ๋ฅผ ์์ ์์ต๋๋ค.
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
scope๋ ์๋ณ์(๋ณ์๋ช
๋ฑ)์ ์ ํจ๋ฒ์๋ฅผ ์๋ฏธํ๋ค.
์ ์ธ๋ ์์น์ ๋ฐ๋ผ ์ ํจ๋ฒ์๊ฐ ๋ฌ๋ผ์ง๋๋ฐ,
js์์๋ ๋ชจ๋ ์ฝ๋๋ธ๋ญ์ด ์ง์ญ ์ค์ฝํ๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ผ๊ณ ํ๋ค.
ํ์ง๋งvarํค์๋๋ก ์ ์ธํ ๋ณ์๋ ํจ์์ ์ฝ๋๋ธ๋ญ๋ง์ ์ง์ญ ์ค์ฝํ๋ก ์ธ์ ํ๊ณ , ์ด๋ฅผ ํจ์๋ ๋ฒจ ์ค์ฝํ๋ผ๊ณ ํ๋ค.
var : ํจ์ ์ฝ๋ ๋ธ๋ก๋ง์ ์ง์ญ์ค์ฝํ๋ก ์ธ์ let, const : ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ์ง์์ ์ญ๋ณ์๋ก ์ธํด ์ฌํ ๋น์ด ์ผ์ด๋๊ฑฐ๋ ๋์ผํ ์ด๋ฆ์ผ๋ก ์ธํด ์์์น ๋ชปํ ๋ณ์ ์ค์ฒฉ์ด ์ผ์ด๋ ์ ์๋ ์ํ ๋๋ฌธ์ ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ์ง์ํ๋ let, const ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
js์์ hoisting์ด๋, ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ๋ปํ๋ค.
var๋ก ์ ์ธํ ๋ณ์๋ ํธ์ด์คํ
์ undefined๋ก ๋ณ์๋ฅผ ์ด๊ธฐํ ํ์ง๋ง,
let, const๋ก ์ ์ธํ ๋ณ์๋ ํธ์ด์คํ
์ ๋ณ์๋ฅผ ์ด๊ธฐํ ํ์ง ์๋๋ค.
let,const๋ก ์ ์ธ๋ ๋ณ์๋ฅผ ์ ์ธ๋ฌธ ์ด์ ์ ์ฐธ์กฐํ๊ฒ ๋๋ฉด ์ฐธ์กฐ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
var์ error๊ฐ ๋์ง์์
var
var๋ก ์ ์ธํ ๋ณ์๋ค์ ๋ชจ๋ ์ ์ญ๋ณ์๊ฐ ๋๋ค. undefined๋ฅผ ๋ฐํํ๋ค let
const
const๊ฐ์ฒด๋ '๋ถ๋ณ'์ด๋ผ๋ ๋ง๊ณผ ๊ฐ์๋ง์ด ์๋๋ค. ๋ณ์์ ์ค์ฝํ๋ ์ต๋ํ ์๊ฒ ๋ง๋๋ ๊ฒ์ด ์ข์ผ๋ฏ๋ก ๋ธ๋ก ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ๊ถ์ฅํ๋ค.
๋ณ๊ฒฝํ์ง์๋ ๊ฐ(์์)์ด๋ผ๋ฉด const๋ฅผ ์ด์ฉํด ์ ์ธ, ๊ทธ๋ ์ง ์๊ณ ๋ณ์ ์ฌํ ๋น์ด ์์๊ฒฝ์ฐ let๋ฅผ ์ด์ฉํด ์ ์ธํ์.