์น ๊ฐ๋ฐ์ด๋ผ๋ ๋ชฉํ ํ์ JavaScript์ ์ฒ์ ๋ง๋ ๋๋ ํ์ํ ๊ธฐ๋ฅ์ ์ ์ํ๊ฒ ๊ตฌํํ๋ ๊ฒ์๋ง ์ง์คํ์๋ค. ์ด๊ธฐ์๋ ํ์ํ ๊ธฐ๋ฅ ๊ตฌํ์๋ง ๊ธ๊ธํด '๋จธ๋ฆฌ๋ฐ์น๊ธฐ' ์์ผ๋ก ํ์ต์ ํ๋ฉฐ, ํ๋ค์ด ๋ฐฉ์์ผ๋ก ํฐ ๊ฐ๋ ์์ ์์ํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋๊ทธ๋ ์ธ๋ถ ์ฌํญ์ ํ์ ํ๋
JavaScript์ ๋ํด ๊ณต๋ถํ๊ธฐ์ ์์, ๊ธฐ๋ณธ๊ธฐ ์ค์ ๊ธฐ๋ณธ๊ธฐ, ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฐ๋์ ์ต๊ดํํด์ผ ํ ์ถ์ํ์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. Abstraction ์ถ์ํ๋ ์ปดํจํ ๋ถ์ผ์์, ํนํ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ฉฐ ํ์ ํ๋ ์ํฉ์์ ๋งค์ฐ ์ค์ํ๋ค. ์ํํ ์ํต์ ์ํด ์์ ์ ์
'์ ์ฐ์ฑ'์ด๋ ๊ฐ๋ฐ์๋ค์ด ์๋นํ ์ข์ํ๋ ๋จ์ด์ด๋ค. JavaScript๋ ์ด๋ฌํ ๊ฐ๋ฐ์๋ค์๊ฒ ์ ์ฐ์ฑ์ ์ ๊ณตํด์ค๋ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ ๋๋ ๊ทธ๋์ JavaScript๋ฅผ ์ฐ๋ฉด์ '์ ์ฐํ๋ค'๋ผ๋ ๋๋์ ํฌ๊ฒ ๋ฐ์ง๋ ๋ชปํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๋ค๋ฉด ์? ์ด๋ค ๋ถ๋ถ์ ์์ด์? JavaS
๋ณ์์ ํ์ฉ, ๊ทธ๋ฆฌ๊ณ ๋ณ์์ ์ ํจ ๋ฒ์์ ๋ฐ๋ฅธ ์ ๊ทผ์ Clean Code๋ฅผ ์ง๋ ๋ฐ์ ์์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ๊ธฐ๊ฐ ๋๋ ํต์ฌ ๊ฐ๋ ์ด๋ค. Scope๋ ๋ฒ์, ์์ญ์ ๋ปํ๋ ๋ง๋ก ๋ณ์ ์ ๊ทผ ๊ท์น์ ๋ฐ๋ฅธ ์ ํจ ๋ฒ์๋ฅผ ๋งํ๋ค. Scope์ ๋ํด์ ์์๋ณด๋ฉฐ ์ถ์ํ๋ฅผ ์คํํ๊ณ , Clea
JavaScript๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ์ ์ฐํ ์ธ์ด๋ก, ๋ค์ํ ๊ฐ์ฒด ์งํฅ์ ํน์ฑ์ ๊ฐ์ง๋ค. ๊ทธ๋ ๋ค๋ฉด ์? ์ด๋ค ๋ถ๋ถ์์ JavaScript๋ฅผ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ผ๊น? ์ด์ ๊ฐ์ ๊ถ๊ธ์ฆ์ ํด๊ฒฐํ๊ธฐ ์ ์, ๋จผ์ ๊ฐ์ฒด์ ๋ํด ๋ํด ์์ธํ
์์ ๊ธ์ ํตํด '๊ฐ์ฒด'์ ๋ํด ์ดํด๋ณด์๋ค. ์ด๋ฒ ๊ธ์์๋, ์ฌ๊ธฐ์ ํ ๋จ๊ณ ๋ ๋์ฝํด ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ฝ '๋ฉ์๋(Method)'์ ๋ํด ์ดํด๋ณด๊ณ ์ ํ๋ค. ๋จ์ ํจ์(Function)๊ณผ ๋ฉ์๋(Method)์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น? ๋ฉ์๋(Method)์ ํจ์(Fu
์์ ๊ธ <JavaScript์์ '๊ฐ์ฒด'๋ ๋ฌด์์ด๊ธธ๋ ์ฌ๋๋ค์ด ์ด๋ฆฌ๋ ๊ฐ์กฐํ๋ ๊ฒ์ผ๊น?> ์์ for...in ๋ฐ๋ณต๋ฌธ์ ๋ํด ํ์ตํด๋ณด์๋ค. ์ด์ ๊ด๋ จํด์ ๋ค์ํ ๊ฐ์ฒด๋ฅผ ํตํด ์ค์ ๋ก for...in ๋ฐ๋ณต๋ฌธ์ ํ์ฉํ๋ ๋์ค, ์ด์ํ ์ ์ ๋ฐ๊ฒฌํ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋
JavaScript๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ผ์ด ๊ต์ฅํ ๋ง๋ค. ์ค์ ๋ก ๋ ๋ํ Date ๊ฐ์ฒด๋ฅผ ์์ฃผ ํ์ฉํด ๋ณธ ๊ฒฝํ์ด ์๋ค. ๋ฌธ์ ๋, ํญ์ Date ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ๋ง๋ค ๊ทธ ์ฌ์ฉ๋ฒ๊ณผ ํจ์๋ค์ด ํท๊ฐ๋ ค ๋งค๋ฒ ๊ตฌ๊ธ๋ง์ ํตํด ์ฐพ์๋ดค๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ๋ธ๋ก๊ทธ๋ฅผ
์ฌ์ค ๋ฐฐ์ด๋ ๊ฐ์ฒด์ด๋ค. ์ฆ, ๋ฐฐ์ด ๋ํ JavaScript์์ ๋ง๋ค์ด ๋์ ์กฐ๊ธ ํน๋ณํ ๊ฐ์ฒด์ธ ๊ฒ์ด๋ค.์์ ๊ฐ์ ํน์ฑ์ผ๋ก, ๋ฐฐ์ด์ ๋ค์ํ ํ๋กํผํฐ์ ๋ฉ์๋๋ค์ด ์์ด์ ํ์ํ ์ํฉ์ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ค. ์ด๋ฌํ ์ธก๋ฉด์ด ๊ฐ์ฒด๊ฐ ์ค์ํ๊ณ , ๋ ์ข์ ์ด์ ์ค ํ๋์ด๋ค.
์์ ๊ธ <JavaScript์ Data Type์ ์ ํน๋ณํ๋ค๊ณ ํ๋ ๊ฒ์ผ๊น?> ์ ํตํด JavaScript์ Data Type ์ค Primary Type์ ์์๋ณด์๋ค. ์ด์ ์ด์ด์, Object Type์ ๋ํด ๋์ฑ ์ฌ๋ ๊น๊ฒ ํ์ตํด ๋ณด๊ณ ๋ ๋์๊ฐ Primary
๊นํ๋ธ๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ค๋ณด๋ฉด const ํค์๋๋ฅผ ์์ฃผ ๋ฐ๊ฒฌํ ์ ์๋ค. ์ฌ์ง์ด ๋๋จํ ๊ฐ๋ฐ์๋ถ๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณผ ๋๋ const ํค์๋๋ฅผ ์ฌ์ฌ์น ์๊ฒ ์ดํด๋ณผ ์ ์์๋ค. ์ค์ ๋ก ๋ช๋ช ์คํ์ผ ๊ฐ์ด๋์์๋ ๋ณ์๋ฅผ const ํค์๋๋ก ์ ์ธํ๋ผ๊ณ ๊ถ์ฅํ๊ณ ๋ ์
javascript์์ ๋ณ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ES2015๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํ์ ์ ๋ง์๋ค. ๊ทธ ์ค, ๊ฐ์ฅ ํฐ ๋ณํ๋ ๋ฐ๋ก let๊ณผ const ํค์๋์ ๋ฑ์ฅ์ด๋ค. ๊ณผ์ฐ ๊ธฐ์กด varํค์๋์ ๋ฌธ์ ๋ ๋ฌด์์ผ๊น? ๊ทธ๋ฆฌ๊ณ ES2015์์๋ ์ ๋ฌธ์ ๋ฅผ let๊ณผ const ํค์๋ ๋์ ์
์๋ฐ์คํฌ๋ฆฝํธ ํจ์์์ ํ๋ผ๋ฏธํฐ๋ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ์๊ท๋จผํธ๋ฅผ ์ฒ๋ฆฌํ ๋ ๋ค์ํ ํจํด์ด ์กด์ฌํ๋ค. ํนํ, ES6 ์ดํ Rest Parameter์ ๋ฑ์ฅ์ผ๋ก ์๊ท๋จผํธ์ ๊ฐ์๊ฐ ๊ฐ๋ณ์ ์ผ ๋ ๋ณด๋ค ์ ์ฐํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์๋ค. ์ด์, ์ด๋ฒ ๊ธ์์
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ๋งค์ฐ ์ ์ฐํ๊ฒ ์ ์ธ๋๊ณ ์ฌ์ฉ๋๋ค. ์ด๋ฒ ๊ธ์ ํตํด ํจ์ ์ ์ธ๊ณผ ํจ์ ํํ์, ๊ฐ์ผ๋ก์์ ํจ์ ํ์ฉ, ๊ทธ๋ฆฌ๊ณ ํ์ดํ ํจ์๊น์ง ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ค์ํ ํจ์ ํ์ฉ๋ฒ์ ๋ํด ์์๋ณด๋ฉฐ ์ํฉ์ ๋ง๊ฒ javascript๋ด์์ ์ ์ฐํ๊ฒ ํจ์๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํ ์
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ตฌ์กฐ ๋ถํด ํ ๋น(Destructuring Assignment) ๋ฌธ๋ฒ์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ์์ฑ์ ํด์ฒดํ์ฌ ๊ฐ๊ฐ์ ๊ฐ์ ๊ฐ๋ณ ๋ณ์์ ํ ๋นํ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ฉํ ๊ธฐ๋ฅ์ด๋ค. ํนํ ํจ์์ ์ธ์๋ก ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ์ ๋ฌํ ๋ ์ผ๋ถ ๊ฐ๋ง ํ์ํ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ