-
[JavaScript/ES6] let ํค์๋(var์ ๋น๊ต)javascript 2019. 3. 29. 10:14
@since 2019-03-29
๋ณธ๋ฌธ์ ์์, ์ฑ ํ ๊ถ์ ์ฝ์ผ๋ฉฐ ์ ๋ฆฌํ๊ณ ์ถ์ ๋ถ๋ถ์ ์ผ๋ถ ๋ฐ์ทํ์ฌ ์ ๋ฆฌํฉ๋๋ค. ์ถ์ฒ๋ฅผ ๋จ๊ธฐ์ง๋ง ํน์ฌ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์๋ ค์ฃผ์๊ณ , ํต๋ณด์์ด ์ญ์ ๋๋ ์ฌํ์ง๋ง ๊ตฐ๋ง์์ด ์ธ์ ํ๊ฒ ์ต๋๋ค.(ํ..) ์ถ์ฒ ๋์์์ ๋ฐ์ทํ ๋ถ๋ถ์ ์ ์ ๋ถ๊ป์ ์ฑ ์ ์์ ํ์ ์ดํฌ ๊ทธ๋๋ก ๋ฐ์ทํ๋ฉฐ, ์ ๊ฐ ์์ฑํ ๊ฒ๋ ํฌ์คํ ํ ๋ ์ ๊ฐ ํท๊ฐ๋ฆฌ์ง ์๊ธฐ ์ํด, ํน์ฌ ๋๊ตฐ๊ฐ ์ด ๋ชจ์๋ ๊ธ์ ์ฝ์ ๋ ์ดํฌ๊ฐ ๋ฐ๋์ด ํผ๋์ ์ฃผ์ง์๊ธฐ ์ํด ์ ์ ๋ถ์ ์ดํฌ๋๋ก ์์ฑํ๊ฒ ์ต๋๋ค.
๋ณ์๋ ์ง์ญ(๋ก์ปฌ)๋ณ์์ ์ ์ญ(๊ธ๋ก๋ฒ)๋ณ์๋ก ํฌ๊ฒ ๊ตฌ๋ถ์ ์ง์ต๋๋ค. ๊ทธ ์ด์ ๋ ์ค์ฝํ(scope, ๋ฒ์) ๋๋ฌธ์ ๋๋ค.
-
์ง์ญ(๋ก์ปฌ)๋ณ์ : ํจ์ ๋๋ ์ค๋ธ์ ํธ๋ฅผ ์ค์ฝํ๋ก ์ฌ์ฉํ๋ ค๋ ์๋์ด๋ฉฐ,
-
์ ์ญ(๊ธ๋ก๋ฒ)๋ณ์ : ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ๊ณต์ฉ์ผ๋ก ์ฌ์ฉํ๋ ค๋ ์๋์ ๋๋ค.
์ค์ฝํ(scope, ๋ฒ์)๋ผ๋ ๋จ์ด๊ฐ ๋์จ ๊น์ var ํค์๋์ let, ๊ทธ๋ฆฌ๊ณ const ํค์๋๊น์ง ์ค์ฝํ(scope, ๋ฒ์)๋ฅผ ์ ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
-
var ํค์๋์ ์ค์ฝํ๋ ํจ์ ์ค์ฝํ์ด๋ฉฐ,
- let, conse ํค์๋์ ์ค์ฝํ๋ ๋ธ๋ก ์ค์ฝํ์ ๋๋ค.
์ญ? ์ด๋ ๊ฒ๋ง ๋ณด๋ฉด ์ ๋ ํ ์๋ฟ์ง๋ ์๋ค์. ๋ฐ์ ์ข ๋ ์ค๋ช ์ ์ด์ด๋๊ฐ๊ฒ ์ต๋๋ค.
var์ ๋ฌด์์ด ๋ค๋ฅธ๊ฐ?
let ํค์๋๋ var ํค์๋์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํน์ง์ด ์์ต๋๋ค.
1. ํจ์ ์์ ์์ฑํ let ๋ณ์๋ ํจ์๊ฐ ์ค์ฝํ์ ๋๋ค.
2. ํจ์ ์์ if(a = b) { let sports = "์ถ๊ตฌ" } ํํ๋ก ์ฝ๋๋ฅผ ์์ฑํ์ ๋, sports ๋ณ์๋ ํจ์๊ฐ ์ค์ฝํ๊ฐ ์๋๋ผ if ๋ฌธ์ ๋ธ๋ก { }์ด ์ค์ฝํ์ ๋๋ค.
3. ๋ธ๋ก { } ๋ฐ์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๊ฐ ์์ด๋ ์ค์ฝํ๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ณ์ ๊ฐ๊ฐ์ ๊ฐ์ ์ค์ ํ ์ ์์ผ๋ฉฐ ๋ณ์ ๊ฐ์ด ์ ์ง๋ฉ๋๋ค.
4. ๋ธ๋ก ์์ ๋ธ๋ก์ ๊ณ์ธต์ ์ผ๋ก ์์ฑํ๋ฉด ๊ฐ๊ฐ์ ๋ธ๋ก์ด ์ค์ฝํ์ ๋๋ค.
5. ๊ฐ์ ์ค์ฝํ์์ ๊ฐ์ ์ด๋ฆ์ let ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค.
6. let ๋ณ์๋ ํธ์ด์คํ (hoisting)๋์ง ์์ต๋๋ค.
let ๋ณ์๋ฅผ ์ ์ธํ๋ ๊ฐ์ฅ ํฐ ๋ชฉ์ ์ ์ค์ฝํ์ด๋ฉฐ ๊ทธ์ค์์๋ ๋ธ๋ก ์ค์ฝํ๊ฐ ๋๋ณด์ ๋๋ค.
๋ธ๋ก ์ค์ฝํ์ ๊ธฐ์ค์ ๋ธ๋ก์ ๋ํ๋ด๋ ์ค๊ดํธ { }์ ๋๋ค. ๋ธ๋ก { } ์๊ณผ ๋ฐ์ ๋ณ์ ์ด๋ฆ์ด ๊ฐ๋๋ผ๋ ์ค์ฝํ๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ณ์๊ฐ ์ ์ธ๋๊ณ ๊ฐ ๋ณ์์ ํ ๋น๋ ๊ฐ์ด ๋์ฒด๋์ง ์๊ณ ์ ์ง๋ฉ๋๋ค.
์ถ์ฒ ๋์ : ECMAScript 6 - ๊น์๋ณด(http://www.yes24.com/Product/goods/35254611)
let๊ณผ var์ ๋น๊ต
์ฐ์ ์ค์ฝํ์๋ ์กฐ๊ธ ๋ฌด๊ดํ๊ฒ ๋์ผํ ์ฝ๋์ ํค์๋๋ง ๋ณ๊ฒฝํ์ฌ ์คํํ์์ต๋๋ค.
(Chrome(Web Browser)์ DevTools์์ ์งํํ์ต๋๋ค.)
โฒ var ํค์๋ โฒ let ํค์๋ ์์ ์ฌ์ง์ DevTools์์ ์์ฑํ ์ฝ๋์ ๋๋ค.
(์ถ์ฒ ๋์์ ์์ ์ค ์ผ๋ถ)
๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ๋์ฌ๊น์?
โฒ var ํค์๋ ๊ฒฐ๊ณผ โฒ let ํค์๋ ๊ฒฐ๊ณผ let์ ์ค์ฝํ์ ์กฐ๊ธ ๋ ํฌ์ปค์ค๋ฅผ ๋๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณธ๋ค๋ฉด ์์ ์์ฑํ๋ let์ ํน์ง์ ๋ํด ์ดํดํ๊ธฐ ์ฌ์ธ ๊ฒ ์ ๋๋ค.
์ด์ ํจ์ ์ค์ฝํ์ ๋ธ๋ก ์ค์ฝํ์ ์ฐจ์ด์ ์ด ๋์ ๋ณด์ด์๋์? ES6๋ก๋ง ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ฉด var๋ฅผ ์ฌ์ฉํ ์ผ์ด ๊ฑฐ์ ์๋ค๊ณ ๋ง์ ๋ถ๋ค์ด ๋ง์ํด์ฃผ์ญ๋๋ค. ํ์์ ํ ์ด ํ๋ก์ ํธ๋ ๊ฐ๋จํ ์์ค๋ฅผ ์งค ๋์ const์ let์ ์ฌ์ฉํด๋ณด์ธ์.
var๋ ์ ์ ๋ฃ์ด๋์๊ณ .
์ ๋ฌธ์ ์ผ๋ก ๋๊ตฐ๊ฐ์๊ฒ ๊ฐ๋ฅด์น๊ธฐ ์ํด, ๋๊ตฐ๊ฐ์๊ฒ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์์ฑํ๋ ํฌ์คํธ๊ฐ ์๋๊ธฐ์ ์ด ๋ด์ฉ๋ง์ผ๋ก ์๊ณ ์ ํ๋ ๊ฒ๋ค์ด ๋ถ์กฑํ์๋ค ํ์๋ ๋ถ๋ค์ ๊ด๋ จํ์ฌ ์ ์ ๋ฆฌ๋ ๋ธ๋ก๊ทธ๊ฐ ์์ด ์๋ดํด๋๋ฆด๊น ํ๋ค๊ฐ ๊ตฌ๊ธ๋ง 3์ด๋ฉด ๋์ค๋ ๋ด์ฉ๋ค์ด๊ณ , ๋ธ๋ก๊ทธ๋ค์ด๊ธฐ์ ๊ตฌ๊ธ๋ง์ ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
'javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-