๐ข 22/07/26 ๋ณต์ต
PoiemaWeb, https://poiemaweb.com/es6-block-scope
javascript.info, https://ko.javascript.info/variables
์ฐธ๊ณ ์ฌ์ดํธ์ ๋ด์ฉ์ ๊ฐ์ธ์ ์ผ๋ก ๋ณต์ตํ๊ธฐ ํธํ๋๋ก ์ฌ๊ตฌ์ฑํ ๊ธ์ ๋๋ค.
์์ธํ ์ค๋ช ์ ์ฐธ๊ณ ์ฌ์ดํธ๋ฅผ ์ดํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
ES6์์ let
๊ณผ const
๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ๊น์ง ๋ณ์๋ฅผ ์ ์ธํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ var
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์์ต๋๋ค. var
๋ก ์ ์ธ๋ ๋ณ์๋ ์๋์ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๐ ํจ์์ ์ฝ๋ ๋ธ๋ญ๋ง์ ์ค์ฝํ๋ก ์ธ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ญ ํจ์ ์ธ๋ถ์์ ์์ฑํ ๋ณ์๋ ๋ชจ๋ ์ ์ญ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ์ ์ญ ๋ณ์๋ฅผ ๋จ๋ฐํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
๐ for
๋ฌธ์ ๋ณ์ ์ ์ธ๋ฌธ์์ ์ ์ธํ ๋ณ์๋ฅผ for
๋ฌธ์ ์ฝ๋ ๋ธ๋ญ ์ธ๋ถ์์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๐ var
์ ์๋ต์ ํ์ฉํ์ฌ, ์๋ฌต์ ์ ์ญ ๋ณ์๋ฅผ ์์ฐํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๐ ๋ณ์ ์ค๋ณต ์ ์ธ์ ํ์ฉํ์ฌ, ์๋ํ์ง ์์ ๋ณ์๊ฐ์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
๐ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ด์ ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ๋ฌธ์ ๋ ์ ์ญ ๋ณ์๋ก ์ธํด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค. ์ ์ญ ๋ณ์๋ ์ฌ์ฉ์ด ํธ๋ฆฌํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ์ต์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. let
๊ณผ const
๋ ์ด๋ฌํ var
์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ์ต๋๋ค.
๐ ๋ธ๋ญ ๋ ๋ฒจ ์ค์ฝํ๋ฅผ ๊ฐ์ง๋๋ค.
ํจ์ ๋ ๋ฒจ ์ค์ฝํ
ํจ์ ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ํจ์ ๋ด์์๋ง ์ ํจํ๋ฉฐ ํจ์ ์ธ๋ถ์์๋ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ฆ, ํจ์ ๋ด๋ถ์์ ์ ์ธํ ๋ณ์๋ ์ง์ญ ๋ณ์์ด๋ฉฐ ํจ์ ์ธ๋ถ์์ ์ ์ธํ ๋ณ์๋ ๋ชจ๋ ์ ์ญ ๋ณ์์ ๋๋ค.
๋ธ๋ญ ๋ ๋ฒจ ์ค์ฝํ
๋ชจ๋ ์ฝ๋ ๋ธ๋ญ(ํจ์,if
๋ฌธ,for
๋ฌธ, ...) ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ์ฝ๋ ๋ธ๋ญ ๋ด์์๋ง ์ ํจํ๋ฉฐ ์ฝ๋ ๋ธ๋ญ ์ธ๋ถ์์๋ ์ฐธ์กฐํ ์ ์์ต๋๋ค. ์ฆ, ์ฝ๋ ๋ธ๋ญ ๋ด๋ถ์์ ์ ์ธํ ๋ณ์๋ ์ง์ญ ๋ณ์์ ๋๋ค.
๐ var
์ ๋ค๋ฅด๊ฒ ๋์ผํ ์ด๋ฆ์ ๊ฐ๋ ๋ณ์ ์ ์ธ ์ ๋ฌธ๋ฒ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
๐ var
์ ์ญ ๋ณ์๋ window
๊ฐ์ฒด์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ง๋ง let
๊ณผ const
์ ์ญ ๋ณ์๋ ๋ณด์ด์ง ์๋ ๊ฐ๋
์ ์ธ ๋ธ๋ญ ๋ด์ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ window
๊ฐ์ฒด๋ก ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๐ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ด์ ์ ์ฐธ์กฐํ ์ ์์ต๋๋ค.
๐ let
์ ์ฌํ ๋น์ด ์์ ๋ก์ฐ๋ const
๋ ์ฌํ ๋น์ ๊ธ์งํฉ๋๋ค.
๐ const
๋ ๋ฐ๋์ ์ ์ธ๊ณผ ๋์์ ํ ๋น์ด ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
๐ ES6๋ฅผ ์ฌ์ฉํ๋ค๋ฉด var
๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๐ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ง ์๋ ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์๋ const
ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. const
ํค์๋๋ ์ฌํ ๋น์ ๊ธ์งํ๋ฏ๋ก var
, let
๋ณด๋ค ์์ ํฉ๋๋ค.
๐ ์ฌํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ์ ํ์ ํด let
ํค์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ ๋ณ์๋ฅผ ์ ์ธํ๋ ์์ ์๋ ์ฌํ ๋น์ด ํ์ํ ์ง ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ์๋ฅผ ์ ์ธํ ๋์๋ ์ผ๋จ const
ํค์๋๋ฅผ ์ฌ์ฉํ๊ณ ์ฌํ ๋น์ด ํ์ํ๋ค๋ฉด ๊ทธ๋ const
๋ฅผ let
ํค์๋๋ก ๋ณ๊ฒฝํด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ถ์ฅํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์ ๋ช ๋ช ์ ๋ ๊ฐ์ง ์ ์ฝ ์ฌํญ์ด ์์ต๋๋ค.
๐ ๋ณ์๋ช
์๋ ์ค์ง ๋ฌธ์์ ์ซ์, ๊ทธ๋ฆฌ๊ณ ๊ธฐํธ $
์ _
๋ง ๋ค์ด๊ฐ ์ ์์ต๋๋ค.
๐ ์ฒซ ๊ธ์๋ ์ซ์๊ฐ ๋ ์ ์์ต๋๋ค.
๋ค์์ ์ ํจํ ๋ณ์๋ช ์ ์์์ ๋๋ค.
let userName;
let test123;
์ฌ๋ฌ ๋จ์ด๋ฅผ ์กฐํฉํ์ฌ ๋ณ์๋ช ์ ๋ง๋ค ๋ ์นด๋ฉ ํ๊ธฐ๋ฒ(camelCase)๊ฐ ํํ ์ฌ์ฉ๋ฉ๋๋ค. ์นด๋ฉ ํ๊ธฐ๋ฒ์ ๋จ์ด๋ฅผ ์ฐจ๋ก๋๋ก ๋์ดํ๋ฉด์ ์ฒซ ๋จ์ด๋ฅผ ์ ์ธํ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํฉ๋๋ค.
๋ฌ๋ฌ ๊ธฐํธ $
์ ๋ฐ์ค _
๋ฅผ ๋ณ์๋ช
์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด ์กฐ๊ธ ํน์ดํ๋ค์. ์ด ํน์ ๊ธฐํธ๋ ์ผ๋ฐ ๊ธ์์ฒ๋ผ ํน๋ณํ ์๋ฏธ๋ฅผ ์ง๋์ง ์์ต๋๋ค.
์๋๋ ์ ํจํ ๋ณ์๋ช ์ ๊ดํ ์์์ ๋๋ค.
let $ = 1; // "$"๋ผ๋ ์ด๋ฆ์ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
let _ = 2; // "_"๋ผ๋ ์ด๋ฆ์ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค.
alert($ + _); // 3
์๋๋ ์๋ชป๋ ๋ณ์๋ช ์ ์์์ ๋๋ค.
let 1a; // ๋ณ์๋ช
์ ์ซ์๋ก ์์ํด์ ์ ๋ฉ๋๋ค.
let my-name; // ํ์ดํ "-"์ ๋ณ์๋ช
์ ์ฌ ์ ์์ต๋๋ค.
๋ณ์๋ช ์ ๊ฐ๊ฒฐํ๊ณ , ๋ช ํํด์ผ ํฉ๋๋ค. ๋ณ์๊ฐ ๋ด๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์ค๋ช ํ ์ ์์ด์ผ ํ์ฃ . ๋ณ์์ ์ด๋ฆ์ ์ง๋ ๊ฒ์ ํ๋ก๊ทธ๋๋ฐ์์ ๊ฐ์ฅ ์ค์ํ๊ณ ๋ณต์กํ ๊ธฐ์ ์ค ํ๋์ ๋๋ค.
์ค์ ํ๋ก์ ํธ์์ ๋งจ ์ฒ์๋ถํฐ ์์ ํ ๋ ๋ฆฝ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ๋ณด๋ค ๊ธฐ์กด ์ฝ๋์ ํ์ ๋ณ๊ฒฝํ๊ณ ํ์ฅํ๋๋ฐ ๋๋ถ๋ถ์ ์๊ฐ์ ๋ณด๋ ๋๋ค. ์์ฑํ๋ ์ฝ๋๋ฅผ ์ผ๋ง ํ์ ๋ค์ ๋ดค์ ๋, ์ ๋ณด์ ์๋ง์ ์ด๋ฆ์ด ์ ํ์์ผ๋ฉด ์ ๋ณด๋ฅผ ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ ์ ๋ด๊ฐ ์ง์ ๋ณ์์ ์ด๋ฆ์ด ๊ด์ฐฎ์์ง ์๊ณ ํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์๋๋ ๋ณ์ ๋ช ๋ช ์ ์ฐธ๊ณ ํ๊ธฐ ์ข์ ๊ท์น์ ๋๋ค.
๐ userName
์ด๋ shoppingCart
์ฒ๋ผ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์.
๐ ๋ฌด์์ ํ๊ณ ์๋์ง ๋ช
ํํ ์๊ณ ์์ง ์์ ๊ฒฝ์ฐ ์ธ์๋ ์ค์๋ง์ด๋ a
, b
, c
์ ๊ฐ์ ์งง์ ์ด๋ฆ์ ํผํ์ธ์.
๐ ์ต๋ํ ์์ ์ ์ด๊ณ ๊ฐ๊ฒฐํ๊ฒ ๋ช
๋ช
ํด ์ฃผ์ธ์. data
์ value
๋ ๋์ ์ด๋ฆ์ ์์์
๋๋ค. ์ด๋ฐ ์ด๋ฆ์ ์๋ฌด๊ฒ๋ ์ค๋ช
ํด์ฃผ์ง ์์ต๋๋ค. ์ฝ๋ ๋ฌธ๋งฅ์ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐ์ดํฐ๋ ๊ฐ์ด ์์ฃผ ๋ช
ํํ ๋์๋ง ์ด๋ฐ ์ด๋ฆ์ ์ฌ์ฉํฉ์๋ค.
๐ ์์ ๋ง์ ๊ท์น์ด๋ ์์๋ ํ์ ๊ท์น์ ๋ฐ๋ฅด์ธ์. ๋ง์ฝ ์ฌ์ดํธ ๋ฐฉ๋ฌธ๊ฐ์ user
๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ก ํ๋ค๋ฉด, ์ด์ ๊ด๋ จ๋ ๋ณ์๋ฅผ currentVisitor
๋ newManInTown
์ด ์๋ currentUser
๋ newUser
๋ผ๋ ์ด๋ฆ์ผ๋ก ์ง์ด์ผ ํฉ๋๋ค.
๐ฅ ์ฌ์ฌ์ฉ ์๋๋ฉด ์๋ก ๋ง๋ค๊ธฐ?
๊ฐ๋ฐ์ ์ค์๋ ์๋ก์ด ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ๋ณด๋ค ๊ธฐ์กด ๋ณ์๋ฅผ ์ฌ์ฌ์ฉ ํ๋ ๊ฑธ ์ ํธํ๋ ๊ฒ์ผ๋ฅธ ๋ถ๋ค์ด ์์ต๋๋ค.
์ฌ์ฌ์ฉ๋ ๋ณ์๋ ๊ณผ๊ฑฐ์ ๋ถ์ฌ์ง ์คํฐ์ปค๋ฅผ ๋ผ์ง ์์ ์ฑ ๋ฌผ๊ฑด๋ง ๋ฐ๋ ์์์ ๊ฐ์ต๋๋ค. ์์ ์์๋ ๋ฌด์์ด ๋ค์ด ์์๊น์? ๋ด์ฉ๋ฌผ์ ๋ํ ์ ๋ณด๋ฅผ ์๊ณ ์๋ ์ฌ๋์ ๋๊ตฌ์ธ๊ฐ์? ์ด๋ฅผ ์๊ธฐ ์ํด์ ์์์ ๊ฐ๊น์ด ๋ค๊ฐ๊ฐ ํ์ธํด์ผ๋ง ํฉ๋๋ค.
๐ฅ ๋ณ์๋ฅผ ์ฌ์ฌ์ฉํ๋ฉด ๋ณ์ ์ ์ธ์ ์๋ ๋ ธ๋ ฅ์ ์ข ๋ ์ ์๊ฒ ์ง๋ง, ๋๋ฒ๊น ์ ์ด ๋ฐฐ ๋ ๋ง์ ์๊ฐ์ ์์์ผ ํฉ๋๋ค. ๋ณ์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ์ต์ด ์๋๋๋ค. ์ข์ ์ต๊ด์ ๋๋ค.
๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ถ๊ธฐ(minifier)์ ๋ธ๋ผ์ฐ์ ๋ ์ฝ๋ ์ต์ ํ๋ฅผ ์ํด์ค๋๋ค. ๋ณ์๋ฅผ ์ถ๊ฐํ๋ค๊ณ ํด์ ์ฑ๋ฅ ์ด์๊ฐ ์๊ธฐ์ง ์์ฃ . ๊ฐ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, ๋ณ์๋ฅผ ๋ค๋ฅด๊ฒ ์ ์ธํด ์ฃผ๋ฉด ์ฝ๋ ์ต์ ํ์ ๋์์ด ๋ ์๋ ์์ต๋๋ค.