์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ์ ์ธ ๋ฐฉ์์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๋ค๊ฐ ๊ถ๊ธํ ์ ์ด ์๊ฒผ๋ค.
โ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ์ ์ธ ๋ฐฉ์์๋ let, const, var ์ด๋ ๊ฒ 3๊ฐ์ง๊ฐ ์๋๋ฐ, ์ด๋ค์ ์ฐจ์ด์ ์ ๋ฌด์์ด๊ณ ์ด๋ค ๊ฑธ ์ฌ์ฉํ๋ ๊ฒ ์ข์๊น? โ
๊ฐ์๋ฅผ ๋ฃ๋ค ๋ณด๋ฉด ๋๋ถ๋ถ์ด โ var์ ์์ ์ ์ธ ๋ฐฉ์์ด๋ ์ต๋ํ let์ ์ฌ์ฉํ์ธ์ โ๋ผ๊ณ ๋ง์ํด ์ฃผ์๋๋ฐ, ๋จ์ง ์์ ๋ฐฉ์์ด๋ผ๊ณ ์ฌ์ฉํ์ง ๋ง๋ผ๊ณ ํ๋ ๊ฒ ๋ง๋ ๊ฑธ๊น ํ๋ ์๊ฐ์ด ๋ค์๋ค.
์ฌ์ค, ์์ง๋ ์๋ฒฝํ๊ฒ ์ดํดํ์ง๋ ๋ชปํ์ง๋ง ๋๋ต โ ์โฆ ๊ทธ๋์ ๊ทธ๋ฌ๊ตฌ๋โฆโ ์ ๋์ ์์ค์ ๋๋ ๊ฒ ๊ฐ์์ ๋์ ์ดํด ๋ฐฉ์์ด ๋ค๋ฅธ ์ด๋ค์๊ฒ๋ ์กฐ๊ธ ๋์์ด ๋์ง ์์๊น ํ๊ณ ๋จ๊ฒจ๋ณด๊ฒ ๋์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ด๊ธฐ์๋ 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๋ ์ค๋ณต ์ ์ธ๊ณผ ์ฌํ ๋น ๋ชจ๋ ๋ถ๊ฐ๋ฅํ๋ค.
(1) let = ์ค๋ณต ์ ์ธ ๋ถ๊ฐ๋ฅ / ์ฌํ ๋น ๊ฐ๋ฅ
(2) const = ์ค๋ณต ์ ์ธ ๋ถ๊ฐ๋ฅ / ์ฌํ ๋น ๋ถ๊ฐ๋ฅ
๋ฐ๋ผ์, ๋ณํ๋ ๊ฐ์ ๋ํด์ ๋ณ์๋ฅผ ์ ์ธํ ๋๋ let์, ๋ณํ์ง ์๋ ๊ฐ ์ฆ ์์๋ฅผ ์ ์ธํ ๋๋ const๋ฅผ ์ฌ์ฉํ๋ค.