๐ ๋ณ์๋ ๋ฌด์์ธ์ง, ๊ฐ ๋ณ์ ํค์๋ ๋ค์ ํน์ง์ ์์๋ณด์
๐ค ๋ณ์๋ ๋ฌด์์ธ๊ฐ ?
๋ณ์(variable)๋ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ผ๊ณ ํ๋ค.
๊ณต๊ฐ์ด๋ฆ = ์ ์ฅํ ๊ฐ; ์ ์ ์ธํด์ค๋ค๋ฉด ๊ฐ์ด ๊ณต๊ฐ์ ์ ์ฅ์ด ๋๋ค.
๋ณ์ ์ ์ธ ๋ฐฉ์์ var , let , const ๋ผ๋ ํค์๋๋ฅผ ์์ ์ ์ธํ๊ณ ๋ณ์๋ฅผ ์ ์ฅํ๋ ๋ฐฉ์์ด ์๋ค.
1๏ธโฃ var
var์ ํน์ง
- var๋ ES6 ์ด์ ์ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ด ๊ฐ๋ฅํ๋ค.
- ํจ์ ๋ฐ์์ var ๋ณ์๊ฐ ์ ์ธ๋๋ฉด ์ ์ญ ๋ณ์(๊ธ๋ก๋ฒ ๋ณ์)๊ฐ ๋์ด ์ด๋์๋ ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ณ , ํจ์ ์์์ ์ ์ธ๋๋ฉด ํจ์ ์(๋ก์ปฌ ๋ณ์)์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
- ์ค๋ณต์ ์ธ์ด ๊ฐ๋ฅํ๊ธฐ์ ๋ณ์์๊ฐ์ด ์๋์น์๊ฒ ์ฝ๊ฒ ๋ณ๊ฒฝ๋ ์ ์๋ค.
- ๋ณ์๋ฅผ ์ ์ํ๊ธฐ ์ ์ ์ฌ์ฉํด๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
ํธ์ด์คํ
์ผ๋ก ์ธํด ํด๋น ๋ณ์์ ์ ์๊ฐ ์์ชฝ์ผ๋ก ๋์ด์ฌ๋ ค์ก๊ธฐ ๋๋ฌธ์ด๋ค.
1. ํธ์ด์คํ
(Hoisting)์ด๋?
๋ณ์์ ์ ์๊ฐ ๋ฒ์์ ๋ฐ๋ผ ์ ์ธ๊ณผ ํ ๋น์ผ๋ก ๋ถ๋ฆฌ๋์ด ๋ณ์์ ์ ์ธ์ ํญ์ ์ต์์๋ก ๋์ด์ฌ๋ฆฌ๋ ๊ฒ์ ์๋ฏธ
์ฆ, ๋ณ์ ์ ์ธ์ ์์น์ ์๊ด์์ด ํด๋น ๋ฒ์ ๋ด์ ์คํ ์ฝ๋๋ณด๋ค ๊ฐ์ฅ ๋จผ์ ์คํ๋์ด ์ ์ธ๋๋ ๊ฒ
์ ์ธ์ ํธ์ด์คํ
์ด ๋์ง๋ง, ํ ๋น์ ํธ์ด์คํ
์ด ๋์ง ์์
์๋ฐ ์คํฌ๋ฆฝํธ์์๋ var ๋ณ์์์ ํธ์ด์คํ
์ด ๊ฐ๋ฅ
๐ var์ ํน์ง์ ๋ฌธ์ ์ ์ด๋ผ๊ณ ๋ณผ์๋์๋ค.์ค๋ณต์ ์ธ์ด ๋์ด ๋ฒ๊ทธ๋ก๋ ๋ฐ์ํ ์์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ var๋ ์ต๋ํ ์ฌ์ฉํ์ง ์์ผ๋ ค๊ณ ํ๋ค.์์ฆ ๊ฐ๋ฐ์๋ค์ ์ด ๋ฌธ์ ์ ์ ๋์ฒดํ๋ let, const ๋ณ์๋ค์ ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค.
2๏ธโฃ let
let์ ํน์ง
- let์ ์ฌ์ ์ธ์ ๋ชปํ์ง๋ง ์
๋ฐ์ดํธ๋ ๊ฐ๋ฅํ๋ค.
- let ๋ณ์์ ๋ฒ์๋ ๋ธ๋ก๋ฒ์๋ค.
- let ๋ณ์๋ ํด๋น ๋ธ๋ก ์์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
- let๋ var์ ๋ง์ฐฌ๊ฐ์ง๋ก ํธ์ด์คํ
์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง undefined๋ก ๊ฐ์ด ์ด๊ธฐํ๋์ง์๋๋ค.
- ์ ์ธ ์ด์ ์ let ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๋ฉด ์ฐธ์กฐ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
3๏ธโฃ const
const ์ ํน์ง
- const๋ ๋ฐ๋ณต์ ์ธ , ํ๋ฒ์ ์ธํ ๊ฐ์ ์
๋ฐ์ดํธ๋ ๋ถ๊ฐ๋ฅํ๋ค.
- const๋ let๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ธ๋ก๋ฒ์์ด๋ค.
๋ฐ๋ผ์ ์ ์ธ๋ ๋ธ๋ก ๋ฒ์์์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
- const๋ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ๊ฐ๋์ด์ผํ๋ค. const๋ก ํ๋ฒ ์ ์ธ๋ ๋ณ์๋ ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค. ๋จ ์ค๋ธ์ ํธ ๋ด ์์ฑ๋ค์ ์์ ์ด ๊ฐ๋ฅํ๋ค.
const USER_PROFILE = {
name :'jack'
age : 25,
}
USER_PROFILE.name = 'sam';
console.log(USER_NAME.name);
์ถ๋ ฅ๊ฐ = sam
๐๐ป Reference
๐๐ป Reference