๋ณ์(Variable)๋ ๋ฌด์์ธ๊ฐ? ๐ป๐คท๐ฟโ๏ธ [Java Script]
๐ถ# ๋ณต์ต์ผ๋ก ์์ฑํ๋ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ถ์กฑํ ์ ์ด ๋ง์ต๋๋ค. ํผ๋๋ฐฑ๊ณผ ์ฝ๋ฉํธ ์ํต ํ์ํฉ๋๋ค. #๐ถ
#JS ๋ณ์, #๋ณ์ ๋ป, # ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์, #๋ณ์ ๊ธฐ์ด
๋ณ์ : ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด์ ๋ช ๋ช ๋ ์์น๋ฅผ ๋ณ์๋ผ๊ณ ํ๋ค.
Input์ด ์์ด์ผ Output์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ด, ๋ด๊ฐ ์ง์ด๋๊ณ ์ถ์ ๊ฐ์ ๋ณ์์ ๋ด์์ ๋ฃ๋๋ค๊ณ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ์ค๋ผ๊ณ ์๊ฐํ๋ฉด ์ข๊ฒ ์ฃ ? ๊ทธ๋ผ ๋ณ์๋ฅผ ์ ์ฐ๋ฉด ์ข์๊น์?
//์๊ณ ๊ธฐ์๋ฌ๋๋ฅผ ๋จน์๋๋ฐ ์นผ๋ก๋ฆฌ๊ฐ ??
10 * 4 //ํ์ํ๋ฌผ ์นผ๋ก๋ฆฌ
8 * 4 //๋จ๋ฐฑ์ง ์นผ๋ก๋ฆฌ
5 * 9 //์ง๋ฐฉ ์นผ๋ก๋ฆฌ
์ด์นผ๋ก๋ฆฌ === (10 * 4) + (8 * 4) + (5 * 9) + 'kcal'
์ด๋ ๊ฒ ์์ฑํ ์ ์๋ ๋ด์ฉ์ ๋ณ์๋ฅผ ์ด์ฉํ๋ฉด !
let carbohydrate = 4;
let protein = 4;
let fat = 9;
์ด ์นผ๋ก๋ฆฌ === (10 * carbohydrate) + (8 * protein) + (5 * fat) + 'kal'
์์ ๊ฐ์ด ๋ํ๋ผ ์ ์์ต๋๋ค. โป ์ดํ ๋ณ์๋ฅผ ์ด์ฉํ๋ฉด ๋ค๋ฅธ ์์์ ์นผ๋ก๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ธฐ๋ ์ฝ๊ฒ ์ฃ ?
๋ณ์ ์ ์ธ์๋ ๋ํ์ ์ผ๋ก 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. [ let, const, var ] ๊ฐ ์์ผ๋ฉฐ ์ 3๊ฐ์ง๋ ์ฌํ ๋น์ด ๊ฐ๋ฅํ์ง, ์ด๋ ๋ฒ์๊น์ง ์ ์ฉ๋๋์ง์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋๋ค.
let | const | var | |
์ ํจ ๋ฒ์ Effective Scope | Block Scope | Block Scope | Function Scope |
๊ฐ์ ์ฌ์ ์ Changing Value | o | x | o |
์ฌ์ ์ธ re-declaration | x | x | o |
์... ๊ฐ์๊ธฐ ์ ํ๊ฐ ์์ง? ํ ์ ์๋๋ฐ, ์ด๊ฒ์ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ ์ธ ๋ช ๋ น์ด๋ค์ด ์ด๋ ํ ํน์ง์ด ์๋์ง ์ ๋ฆฌํ ํ์ ๋๋ค.
- let์ Block Scope ์์์๋ง ์ ํจํ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํฉ๋๋ค. Blcok Scope๋ { } ์ด๋ ๊ฒ ์ค๊ดํธ ์์ ๋ด๊ฒจ์ง ์์ญ์ผ๋ก Global Scope, ์ฆ ์ ์ญ๋ณ์๊ฐ ์๋ ๋ก์ปฌ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ ๋ณ์๋ฅผ ๋ง๋ญ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ดํ์ ๋ด
์๋ค! ๐ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด let์ผ๋ก ์ ์ธํ ๋ณ์๋ ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ ์ธ๋ถ ์ค์ฝํ(์์ญ)์์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ ๋ณ์๋ฅผ ๋ง๋ ๋ค๊ณ ์๊ฐํด์ฃผ์ธ์.
-const๋ let๊ณผ ๋น์ทํ๊ฒ ์ธ๋ถ ์ค์ฝํ์์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๊ณ Block Scope๋ด์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ฐ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค!! ๐จ ๊ฐ์ ๋ชป ๋ฐ๊พผ๋ค๋ฉด ์ข ๋ถํธํ์ง ์๋์? ๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง, ์ฝ๋๋ฅผ ์์ฑํ๋ค ๋ณด๋ฉด ์ค์๋ก ๊ฐ์ ๋ฐ๊พธ๊ฑฐ๋ Error๋ฅผ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๊ฐ์ด ๊ณ ์ ๋ ๋ณ์๊ฐ ์๋ ๊ฒ๋ ์ข์ต๋๋ค!
-var๋ Fuction Scope, ์ฆ ํจ์ ๋ด์์ ์ ํจํ๊ธฐ ๋๋ฌธ์ var๋ก ์ ์ธํ ๋ณ์๋ ํจ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ฐธ์กฐ๋ฅผ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ ์ธ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ด๋์๋ ์ ์ธ์ ๋ค์ ํ ์ ์์ฃ . ํ์ง๋ง ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ๋ค์ ๋ณ์๋ฅผ ์ ์ธํ ํ์ด๋ฐ์ด... ๋ง์๊น์? ์ฌ์ค var๋ ์ด์ Oldํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํฉ๋๋ค. { } Block ๋จ์๋ก ์์ฑ๋๋ ์ฝ๋์์ var๋ก ์์ฑ๋ ์ฝ๋๋ ์ค๋ฅ๋ฅผ ์ฐพ๋ ๋๋ฒ๊น
์ ํ๋ ๊ณผ์ ์์๋ ํจ๋ํฐ๊ฐ ์๊ณ ์ฌ๋ฌ๋ชจ๋ก ์ฌ์ ์ธ์ด ๋๋ ํน์ง์ด ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์ ์ค์๋ฅผ ์ ๋ํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
โ So! ์๋ก์ด ์
๋ฐ์ดํธ๊ฐ ์๋ค๋ฉด ๋ค์ ์ฌ๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค ํ!๐
์ง์ญ๋ณ์๋ฅผ ์ฐ์ ์ผ๋ก ํ๋ค!