๐ 2. Week02 ํ๊ณ (22.09.26 ~ 22.10.01)
๐ ๋ฒ์จ 3์ฃผ์ฐจ ๋์ ์ด๋ผ๋,
ํญํด๋ฅผ ์์ํ์ง ์ด์ฃผ์ผ์ด ์ง๋ฌ๋ค.
์ด์ฃผ์ผ์ด ์ง๋ฌ๋ค์ง๋ฉด ๋ ์ง์์ผ๋ก์ง, ์ปค๋ฆฌํ๋ผ์์ผ๋ก๋ 3์ฃผ์ฐจ์ ๋์
ํ๋ค.
์ฐ์ ์ ๋ฒ ์ฃผ์ฐจ ์๊ธฐ๋ฅผ ์ข ํ์๋ฉด ๋์๊ฒ ์ด๋ ต๊ณ , ์์ฝ๊ณ , ๋ต๋ตํ ํ์ฃผ์๋ค.
"ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด" ์ฃผ์ฐจ ์๋๋ฐ, JavaScript๋ฅผ ๋ฐฐ์ฐ๊ณ ์ตํ๋ ๊ฒ์ ๊ด์ฐฎ์๋ค.
ํ์ง๋ง ๋ฌธ์ ์ ์ "์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด" ์๋ค.
์์ ์ฒ์ ํ์ด๋ณด๋ ๋ฌธ์ ์, ๋ง๋ก๋ง ๋ฃ๋ ์ด๊ฒ ์ฝ๋ฉํ
์คํธ๋ ํผ๋ค๋ ๋ฌธ์ ์ธ๊ฐ?
๋ผ๋ ์๊ฐํ๋ฉฐ ํ์๋๋ฐ, ์ฒ์๋ถํฐ ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๊ฒ ๋๋ผ.
ํ์ง๋ง ๊ธฐ์ ๋งค๋์ ๋๋ค ๋ฐ ๋งค๋์ ๋๋ค ์กฐ์ธ ๋ค์ผ๋ฉด์, ํ๋ค๋ณด๋ ์กฐ๊ธ์ฉ์ ๋ณด์ด๋๋ผ.
ํ๋ฃจํ๋ฃจ๊ฐ ๊ตฌ๊ธ๋ง๊ณผ Javascript , ํจ์ ์ด๋ป๊ฒ ์ฐ์ง? ๋ผ๋ ์๋ฌธ์ ์ฐ์์ด์๊ณ
๊ฒฐ๊ตญ ๋ง์ง๋ง๊น์ง ์ฃผ์ฐจ ๋ชฉํ๋ก ์ ํด์ ธ์๋ 28๊ฐ๋ ์ฑ์ฐ์ง ๋ชปํ๋ค. 15๊ฐ ๋ฌธ์ ์ ๋ ํ์์๋,
๊ฒฐ๊ณผ์์ผ๋ก๋ ์์ฌ์ด ๊ฒฐ๊ณผ๊ฐ์ง๋ง ํ์ผ ์ผ๋ก ๋ด๊ฐ ํ์๋ ๋ฌธ์ ๋ค์ ๊ทธ๋๋ ์ข ์ดํดํ๊ณ ํ์ํ
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋์ด๊ฐ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๊ทธ๋๋ง ๋คํ์ธ ๊ฒ ๊ฐ๋ค.
๐ ์๋ฐ์คํฌ๋ฆฝํธ์ ES๋?
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐฐ์ฐ๋ฉด์, ์ฌ์ฉํ๋ ๋ฉ์๋ ๋ฐ ํจ์๋ค์ ๊ฒฝ์ฐ๋ ์กฐ๊ธ์ฉ ์ตํ๊ฐ๋๋ฐ,
๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ์ ES๋ ๋ฌด์์ผ๊น? ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ถํฐ ๊ฐ๋จํ ์ง๊ณ ๋์ด๊ฐ์๋ฉด,
Javascript๋ ์๋ ๋ท์ค์ผ์ดํ์์ ์์๋ ์ธ์ด์ธ๋ฐ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์ ๊ทผ๊ฐ์ด๋ผ๊ณ ๋ณผ ์ ์๋ C์ธ์ด๋ณด๋ค ํจ์ฌ ๋์ค์ ๊ฐ๋ฐ๋ ์ธ์ด์ด๋ค.
๊ฒฐ๊ณผ๋ถํฐ ๋งํ๋ฉด ES๋ผ๋ ๊ฒ์ 'Javascript์ ํ์ค ๊ท๊ฒฉ'์ ์๋ฏธํ๋๋ฐ, ์ด๊ฒ์ด ํ์ํ ๋ฐฐ๊ฒฝ์๋ '๋ธ๋ผ์ฐ์ ์ ์'์ด๋ผ๊ณ ํ๋ ์น ๋ธ๋ผ์ฐ์ ์์ฅ์์์ ์ ์ ์จ ์ธ์์ด ์์๋ค. ๋ท์ค์ผ์ดํ ์ฌ์์ ๊ฐ๋ฐํ Javascript๊ฐ ์ ํ์ ์ธ ์ธ๊ธฐ๋ฅผ ๋๊ธฐ ์์ํ์ ๋ง์ดํฌ๋ก์ํํธ ์ฌ์์๋ IE 3(์ฐ๋ฆฌ๊ฐ ์๊ณ ์๋ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ)์ JScript๋ผ๋ ์ด๋ฆ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฌํ์ง๋ง, ์ค์ ์ ์ผ๋ก๋ ๋์ ๋ด์ฉ์ด ๋งค์ฐ ๋ฌ๋ผ์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๋๋ผ๋ ๊ฐ๋ฐ์๋ค์ด ํด์ผํ ์ผ๊ณผ ์๊ฐ์ด ํจ์ฌ ๋์ด๋๊ฒ ๋์๋ค.
์ค์ ๋ก ์๋ก ์ฌ์ฉ์๋ฅผ ๋์ด๋ค์ด๊ธฐ ์ํด ์ด๊ฒ์ ๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค ๋ณด๋ Javascript์ JScript๋ ์ ์ ๋ค ๋ฌ๋ผ์ง๋ ๊ฒฝํฅ์ ๋ณด์๊ณ , ์ด์ ๋ณด๋ค๋ชปํ European Computer Manufacturers Association (ECMA, ํ ECMA International)์์ Javascript์ ๋ํ ํ์ค์ ์ ํ๊ฒ ๋์๋ค.
๊ฒฐ๋ก ์ ECMA Script์ ์ค์๋ง, ์ฆ ์ธ์ด vs ํ์ค๊ท๊ฒฉ ์ฐจ์ด ์ธ ๊ฒ ๊ฐ๋ค.
์ ๊ทธ๋ฆฌ๊ณ , Javascript์๋ ES~~ ๋ก ์์๋๋๊ฒ ์๋๋ฐ ๊ทธ๊ฑด ์ฝ๊ฒ ์๊ธฐํ์๋ฉด
์๋์ฐ ๋ฒ์ ์ ๊ฒฝ์ฐ window 7,8~ 10 11 ์ด๋ ๊ฒ ๋ฒ์ ์
๋๊ฒ ๋์ค๋๋ฐ
ES(00)๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ข๋ ๊ฐ์ ํ๊ณ , ์ถ๊ฐํด์ ๋์ค๋ ๋ฒ์ ์
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๐ ES5 vs ES6 ๋ฒ์ ์ ์ฐจ์ด?
โถ๏ธ ES5 (2009)
์๋ฃ๋ฅผ ์ฐพ์๋ณด๋ค ํน์ดํ ์ ์ ๋ฐ๊ฒฌํ๋๋ฐ, ์๋ ECMA-262์๋ ES4 ํ์ด ์กด์ฌํ์๋ค. ํ์ง๋ง ์ธ์ด์ ๊ด๋ จ๋ ์ ์น์ ์ธ ์ฐจ์ด๋ก ์ธํด์ ๋ฒ๋ ค์ก๋ค๊ณ ํ๋ค. ์ด ์ค ์ผ๋ถ๊ฐ ES5์ ์ด๋ฃจ๋ ๊ธฐ๋ณธ์ด ๋์๋ค.
โถ๏ธ ES6 (ES 2015)
์ด ๋ฒ์ ์ ES6๋ผ๊ณ ๋ ํ๊ณ ES2015๋ผ๊ณ ๋ ํ๋๋ฐ, ๋๊ฐ๊ฐ ๊ฐ์ ๋ฒ์ ์ด๊ณ ๋ถ๋ฆฌ๋ ์ด๋ฆ๋ง ๋ค๋ฅด๋ค. ์ด์ ๋ ๋ค์ ๋ฒ์ ์ซ์(3,4,5,6 ๋ฑ๋ฑ)๋ง ๋ถ์ด๋ฉด ๊ฐฑ์ ๋๋ ES์ ๋ฐํ์ ์งํ์ด ๋ณด๊ธฐ ์ด๋ ต๋ค๋ ์ด์ ๋๋ฌธ์ด๋ค.
์๋ ES๋ ๋ช๋
์ ํ ๋ฒ์ฉ ๋ฐํ๊ฐ ๋์์ง๋ง, ES5์ดํ๋ถํฐ๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ์น ์ํ๊ณ ๋๋ฌธ์ 1๋
์ ํ๋ฒ์ฉ์ ๊ฐฑ์ ์ ํ์๋ ์์ง์๋ค์ด ์๊ฒจ๋๊ฒ ๋์๊ณ , ์ด๋ก ์ธํด ๋จ์ํ ์ซ์๋ฅผ ๋ถ์ด๊ธฐ ๋ณด๋ค๋ ๊ฐฑ์ ๋ ์ฐ๋๋ฅผ ๋ถ์ฌ์ ์๋ก์ด ์ด๋ฆ์ ๋ง๋ค์๋ ์๊ฒฌ๋ค์ด ์๊ฒจ๋๊ฒ ๋์๋ค.
(๊ทธ๋ฆฌ๊ณ ์ด๋ ์์ฒญ๋๊ฒ ๋ง์ ์ถ๊ฐ์ ์ด ์๊ฒผ๋ค...)
Hoisting์ ๊ฐ์ ํ๋ค.
๊ธฐ์กด์๋ varํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํธ์ด์คํ ์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋ฌ๋๋ฐ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง let๊ณผ const๋ฅผ ์ถ๊ฐํ๋ค.
ํ์ดํ ๋ฌธ๋ฒ์ ์ง์ํ๋ค.
์ฅ์ : ์ฝ๋์ ๊ฐ๊ฒฐํ, this๋ฅผ ๋ฐ์ธ๋ฉํ์ง ์๋๋ค. (์์ ๋งํฌ)
iterator์ generator ์ถ๊ฐ.
module์ import/export ์ถ๊ฐ.
Promise ๋์
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋น๋๊ธฐ์ ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ callback์ ๋ํ ์ด์๊ฐ ๋ง์์ผ๋ ์ด๋ถ๋ถ์ ํด๊ฒฐํ ์ ์๋ ๋ฌธ๋ฒ์ ์ ๊ณตํ๋ค.
๐ ๋ง์น๋ฉฐ
๋ฒ์ ์ฐจ์ด๋ฅผ ๋ณด๋ฉด์ ๋๋ ๊ฒ์, ์ ์ด๋ฐ์์ผ๋ก ์ถ๊ฐ ๋์๋ค, ์ ๋๋ง ์๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
์๊ฐ๋ณด๋ค ์ด์ ๊น์ง ์จ๋ณธ๊ฒ ์ค์ ES5๊ฐ ๋ด์ฉ์ด ๋ ์๋๊ฒ ๋ง์ ๊ฒ ๊ฐ๋ค.
์์จ๋ณธ๊ฑธ ๋ค์์ ์ธ๋, ์ ์ด๊ฑฐ ๋ฒ์ ๋ช์ ์ถ๊ฐ ๋๊ฑฐ์ง ๋ผ๊ณ ์๊ฐํด๋ณด๊ณ ์ถ์ง๋ง ๊ฐ๋ฅํ ์ง..?
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ ๋๋ฌด๋๋ ์ด๋ ค์ด๊ฒ, ํ์ฉํ๋ ๊ฒ์ ์ค์ ์ ๋๋ค๋ณด๋ ์ด์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด
์ฃผ์ฐจ๋ ์๋ ๊ฒ ๊ฐ์ง๋ง ์กฐ๊ธ์ฉ ๊ฑด๋๋ ค ๋ณด๊ธด ํด๋ด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค.
์ด๋ฒ ์ฃผ์ฐจ์๋ ๋ญ๊ฐ ๋ฐฐ์ด๊ฒ๋ค์ด ๋ง๊ณ ์์ฌ์ด ํ ์ฃผ ์๋๊ฒ ๊ฐ๋ค. ์ดํด๋ ฅ์ด ๋๋ฌด ์์ข์์
๋ฌธ์ ๋ฅผ ์ ๋๋ก ํด๊ฒฐ์ ์๋ฒฝํ๊ฒ ํ ๊ฒ์ ์์ง๋ง, ํ ๊ฑธ์ ์ ๋๋ ๋ด๋์ ๋๋์ด๋๊น.
ํ์ฌ ๋ฆฌ์กํธ ๊ธฐ์ด ์งํ์ค์ธ๋ฐ,, ์,, ์ด๋ ต๋ค.. ์๋ฐ๋ผ ๊ฐ ์ ์์์ง..
์ฐ๋ฉด์ ๋๋ผ๋๊ฑด๋ฐ ์๋๋ ๋ฐฐ์ด๊ฑธ ๊ทธ๋๊ทธ๋ ํ๊ณ ์ถ์์ง๋ง. ๊ณต๋ถํ๊ธฐ ๊ธ๊ธํ๊ธฐ ๋๋ฌธ์
๊ทธ๋ฅ ๊ฐ๋จํ ๋ฐฐ์ด์ ์ฐ๊ณ , ํ์ ์ฌ์ ๊ฐ ์ข ๋ ์๊ธด๋ค๋ฉด ์์ธํ ์ ์ฑ๋ค์ฌ์ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ.