2021-01-05(Tue)
ํญ๋ชฉ | ๋ด์ฉ |
ํ์ต ๋ ์ง | 2021-01-05(ํ) |
ํ์ต ์๊ฐ | 12:00~24:00 |
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ | ๋ฃจ๋น์จ๋ ์ผ์ฆ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ - Sprockets, Asset pipeline |
ํ์ต ๋ชฉํ | ํผํํธ ๋ฃจ๋น์จ๋ ์ผ์ฆ์ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ๋ํ ๋ด์ฉ์ ํ๊ณ ํธ๋ ์ ๋์ค ๊ตฌํ์ ํ์ํ ๊ฐ๋ ์ ์์งํด๋๋ค. |
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ | eunhkim, jujeong, sanam, yohlee ๋๊ณผ ๋์ค์ฝ๋๋ก ํ์ต์๊ฐ ๊ณต์ + ํ์ต๋ฏธํ ์ ์งํํ๋ค. |
์์ธ ํ์ต ๋ด์ฉ
๋ ์ผ์ฆ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ์ ๋ํด์ ์ฑ ์ ํ์๋ค. ์ด ๊ณผ์ ์์ Sprockets๋ง ์ฑ ์ ์ ํ์๋๋ฐ Asset ํ์ผ ๊ตฌ์กฐ๊ฐ Rails 6์ ๋ฌ๋ผ์ ๊น๊ฒ ํ๋ณด์๋๋ webpacker์ ๊ธฐ๋ฅ์ด ๋๋์ด์ง ์ํฉ์์ ์๊ฒ ๋์๋ค. ์ด ๋ถ๋ถ๊น์ง ํ ๋ ํ์์ด ์์๊ธฐ์ ์ ๋ฆฌํด์ ๊ณต์ ํ์๋ค. Ajax, ํฐ๋ณดํ์ด์ง ๋ฑ์ ์ค์ตํด๋ณด์ง๋ ์์์ง๋ง ๊ฐ๋ ์ ํ์ธํด๋์ผ๋ ์ถํ Rails ๊ฐ๋ฐ์ ์ ์ฉ์ํค๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
backbone js๋ฅผ ํ์ตํ๊ธฐ ์ ์ ์ฐ์ javascript์ ๋ํ ํ์ต์ด ์ ํ๋์ด์ผํจ์ ํ์ธํ๋ค. ๋น ๋ฅด๊ฒ TCP School์ ํ์๋ค.
์๋๋ ํ์ตํ ๋ด์ฉ์ ๋ฉ๋ชจ์ด๋ค.
Rails ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ
Sprockets vs Webpacker
์ฐ์ ์์ ๊ฐ๋ ์ ์ง์. ์ ์ (Asset)์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋, ์คํ์ผ์ํธ, ๊ทธ๋ฆผ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ค๋ฃจ๋ ๋ชจ๋ ๋ฆฌ์์ค์ ์ด์นญ์ด๋ค.
Rails4 ์์๋ ์์ ์ ์ฝ์ด๋ค์ด๊ธฐ ์ํด Sprockets ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค. Rails6 ์์๋ Sprockets ๋ง๊ณ ๋ Webpacker๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ค. ๊ฐ์ด ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์ฐพ์๋ณด๋ Webpacker๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์คํ์ผ์ ๋ค๋ฃจ๋๋ฐ ์ฐ๊ณ , Sprockets๋ ๋๋จธ์ง ์ ๋ถ๋ฅผ ๋ค๋ฃจ๋๋ฐ ์ฐ๋ ๊ฒ ๊ฐ๋ค.
"Rails way": Webpacker to compile JavaScript, Sprockets for CSS, images, and fonts
์ด์ฐจํผ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๋ก ์์กด์ฑ์ 1๋ ๊ฐ์ง๊ณ ์์ง ์๋ค. ๋ฐ๋ผ์ Sprockets๋ง ์ฐ๊ฑฐ๋ Webpacker๋ง ์ฐ๋ ๊ฒ๋ ์ ํจํ๋ค. ์ฆ, ๋ ๋ค ์ ํ์ง๋ก ์กด์ฌํ๋ค๋ ์๋ฆฌ๊ณ ์ํฉ์ ๋ฐ๋ผ ์ ํํด์ผํ ๋ฌธ์ ๋ค. ์๋ ์์๋ฅผ ์ฐธ๊ณ ํ์.
Sprockets์ ์ธ ์ด์ (์ํฉ)
๋ด Rails ์ฑ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ด ์ ์ด๋ค.
์ ์ญ ์คํฌ๋ฆฝํธ์ jQuery๋ฅผ ์ ํธํ๋ค. ์๋ฅผ ๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ ์ ์ธ ํ์๊ฐ ์๋ ์ํฉ์ด๋ค.
legacy Rails ์ฑ์ Webpacker๋ก ์ ๊ทธ๋ ์ด๋ ๋น์ฉ์ด ๋ ๋น์ธ๋ค.
๋ก์ปฌ ๊ฐ๋ฐ์ ์ํด ๊ณ ๊ธ ํด๋ง(tooling)์ ํ ํ์๊ฐ ์๋ค.
๊ฑ ๋์๊ฐ๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ธฐ๋ฅผ ์ํ๋ค. ๋ง ์ข์ ๋์์ ์ฐพ์ ์๊ฐ์ด ์๋ค.
๋ด Rails ์ฑ์ด ํน์ gem์ ์ฌ์ฉํ๋ฉฐ, NPM์ ๋์ ํ ์ ์๋ค.
Sprockets๋ฅผ ์ฐ์ง ์์ ์ด์ (์ํฉ)
Sprockets๋ ๋ก์ปฌ๊ฐ๋ฐํ๊ฒฝ์์ ๋๋ฆฌ๋ค.
asset์ ์ข ๋ ์ฌ์ธํ๊ฒ ์ ์ดํด์ผํ๋ค.
๋ด ์ฑ์๋ JavaScript๊ฐ ๋ง๊ณ ๋๋์ ํ์ด๋ก๋๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฝ๋ ๋ถํ ๊ธฐ๋ฅ์ด ํ์ํ๋ค.
์ฅ๊ธฐ์ ์ผ๋ก ์ง์์ ์ ์งํ ์๋น์ค๋ค.
Webpacker๋ฅผ ์ธ ์ด์ (์ํฉ)
์์กด์ฑ ๊ด๋ฆฌํ๋๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋ ์์คํ ์ ์ฐ๋ ๊ฒ์ ์ ํธํ๋ค. ์๋ฅผ ๋ค์ด ์ ์ญ ์ค์ฝํ๊ฐ ์ค์ผ๋์๊ฑฐ๋ ๋ช ์์ ์ธ ์ข ์์ฑ ๊ทธ๋ํ๊ฐ ์๊ตฌ๋๋ค.
ES6+, Babel, PostCS์ ์ต์ฒจ๋จ ๊ธฐ๋ฅ์ ํ์ฉํ๊ณ ์ถ๋ค.
๋์ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ์น ํฉ์ splitChunks ์ต์ ํ์ ๊ฐ์ ์ง๋ฅํ ์ฝ๋ ๋ถํ ๊ธฐ๋ฅ์ ์ํ๋ค.
๋น๋ ์์คํ ์์ ์์ค ๋งต์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ํ๋ค.
hot module replacement ๊ฐ์ ๊ณ ๊ธ ํด๋ง(tooling)์ด ํ์ํ๋ค.
์ฑ๊ธ ํ์ด์ง ์ฑ์ ๋ง๋ค๊ณ ์ถ๋ค. ์, ๋ฌผ๋ก Webpack์ ์ฐ๋ ค๊ณ ์ฑ๊ธ ํ์ด์ง ์ฑ์ ๋ง๋ค ํ์๋ ์๋ค. Webpack์ ๋ฉํฐ ํ์ด์ง ์ฑ์์ ๋ ์ ์๋ํ๋ค.
Webpacker๋ฅผ ์ฐ์ง ์์ ์ด์ (์ํฉ)
๋ด Rails ์ฑ์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ง์ด ์์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์์ฝ์์คํ ์ ๋ํด์ ์ง์์ด ๋ถ์กฑํ๋ค.
webpack๊ณผ Webpacker ํ์ต์ ์๊ฐ์ ์ธ ์๊ฐ ์๋ค.
๋ ๋ณต์กํด๋ณด์ธ๋ค.
Sprockets๋ก ์๋ฐ์คํฌ๋ฆฝํธ, ์คํ์ผ์ํธ ์ํฌํธ
Sprockets๋ ์์
์ ๋งค๋ํ์คํธ, ์ฆ ๋ฏธ๋ฆฌ ์ค๋น๋ ๋ฆฌ์์ค๋ก ์ฝ์ด๋ค์ธ๋ค. app/assets
ํด๋๋ฅผ ํ์ธํ์.
๋งค๋ํ์คํธ ์ ์๋ ๊ฐ๊ฐ ์ฃผ์(//, /* ~ */)์ ๋ด๋ถ์ =<์ง์์> <๋งค๊ฐ ๋ณ์>
์ ํ์์ผ๋ก ํ๊ธฐํ๋ค.
์ฐธ๊ณ ๋ก Rails๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๊ฐ๋ฐ ์ธ์ด๋ก ์ปคํผ์คํฌ๋ฆฝํธ์ SCSS๋ฅผ ํ์ค์ผ๋ก ์ง์ํ๊ณ ์๋ค. ํ์ง๋ง ๋ฐ๋์ ์ฌ์ฉํ ํ์๋ ์๋ค.
์์
ํ์ดํ๋ผ์ธ(Asset Pipeline)
์์ ํ์ดํ๋ผ์ธ์ Sprockets ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ๊ณต๋๋ ๊ตฌ์กฐ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ์ ์คํ์ผ์ํธ, ์ด๋ฏธ์ง ๋ฑ์ ์ ๊ทผ์ ํ๊บผ๋ฒ์ ๊ด๋ฆฌํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์๋ตํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ฑ ์์ ๋ฌ์ฌ๋ Rails4 ๊ธฐ์ค ์์ ํ์ดํ๋ผ์ธ์ ์๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
์๋ ์์ค ์ฝ๋ ex)
articles.js.coffee
,photos.css.scss
์ปดํ์ผ ex)
article.js
,photos.css
๊ฒฐํฉ ex) ๊ฐ๊ฐ
application.js
,application.css
์ ๊ฒฐํฉ๋จ.์์ถ
์๋ ์ฝ๋์์ ์ฃผ์์ด๋ ๊ฐํ, ๊ณต๋ฐฑ ๋ฑ์ ์ ๊ฑฐํ๋ ๊ฒ์ ๋งํ๋ค. ex) ๊ฐ๊ฐ
application.js
,application.css
์ ์์ถ๋จ.๋ค์ด์ ์คํธ ์ถ๊ฐ
์ฝ๋์ ๋ด์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํด์(๋ค์ด์ ์คํธ)๋ฅผ ์ฐ์ฐํด์ ํ์ผ์ ๋ง์ง๋ง์ ๋ถ์ธ๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ์ง ์์ ์บ์ ์ฌ์ฉ์ ํผํ๊ธฐ ์ํด์์ด๋ค. ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ ๋ ํ์ผ ์ด๋ฆ์ ๊ฐ์ ์ ์ผ๋ก ํจ๊ป ๋ณ๊ฒฝํ๋ฏ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ์ด์ ์ ์์ ์ฝ๋๋ฅผ ์ฌํ์ฉํ๋ ์ผ ์์ด ์์ ์์ ์ด ์ค์๊ฐ์ผ๋ก ๋ฐ์๋๋ค. ex) ๊ฐ๊ฐ
application-xxxx.js
,application-xxxx.css
๋ก ๋ค์ด์ ์คํธ ์ถ๊ฐ๋จ.
์ด ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ 2๋ฒ(์ปดํ์ผ) ๊ณผ์ ์ ๊ฑฐ์น ํ์ ๋ฐ๋ก ์ถ๋ ฅํด๋ฒ๋ฆฐ๋ค.
๋ฐ๋ฉด ๋ฐฐํฌ ํ๊ฒฝ์ 2๋ฒ ๊ณผ์ ์ ๊ฑด๋๋ฐ๊ณ ๋ฐ๋ก 3(๊ฒฐํฉ), 4(์์ถ), 5(๋ค์ด์ ์คํธ ์ถ๊ฐ) ๊ณผ์ ์ ๊ฑฐ์น๋ค.
Ajax ๊ฐ๋ฐ
Ajax(Asynchronous JAvascript + Xml)์ ๋ธ๋ผ์ฐ์ ์์์ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ์ฒ๋ผ ๋ค์ํ ํํ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. ์ด๋ฌํ ๊ธฐ์ ๋ก ๊ตฌํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ RIA(Rich Internet Applications)๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. RIA ๊ธฐ์ ๊ตฌํ ๋ฐฉ๋ฒ์ ํ๋์๋ ์ค๋ฒ๋ผ์ดํธ ๊ฐ์ ๊ธฐ์ ๊ณผ Ajax ๊ธฐ์ ์ด ์๋ค. ํ๋์์ ์ค๋ฒ๋ผ์ดํธ๋ ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํด์ผํ์ง๋ง Ajax๋ ์น ํ์ค ๊ธฐ์ ๋ง์ผ๋ก ์๋ํ๋ค๋ ์ ์ด ๋ค๋ฅด๋ค. ์ฐธ๊ณ ๋ก ํ๋์๋ ์ฌ์ฅ๋์๋ค.
Ajax๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ํต์ ์ด ๋๋ค. ๋ฐ๋ผ์ ํ์ด์ง ์ ์ฒด๊ฐ ์๋ก๊ณ ์นจ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ํ์๋ ์๋ค.
Javascript
javascript๋ฅผ ํ์ตํ๋ฉฐ ๊ฐ๋จํ๊ฒ ๋ฉ๋ชจํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํน์ง
ํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ต์ ํ์ค์ 2015๋ ์ ๋ฐํ๋ ECMAScript 6์ด๋ค.
ํ์
์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ ํ์ ์ ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ผ๋ก ๊ตฌ๋ถํ ์ ์๋ค.
์์ ํ์
(primitive type)
์ซ์(number)
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ชจ๋ ์๋ฅผ ์ ์, ์ค์ ๊ตฌ๋ถ ์์ด ์ค์ ํ๋๋ก๋ง ํ๊ธฐํ๋ค.
๋ฌธ์์ด(string)
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ซ์์ ๋ฌธ์์ด์ ๋ํ ์๋ ์๋ค. ์ด๋ด ๊ฒฝ์ฐ์ ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ์๋ ํ๋ณํํด์, ๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ ์ฐ์ฐ์ ์ํํ๋ค.
๋ถ๋ฆฌ์ธ(boolean)
์ฌ๋ณผ(symbol): ECMAScript 6๋ถํฐ ์ ๊ณต๋จ. ์ฌ๋ณผ์ ์ ์ผํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ ํ์ ์ผ๋ก, ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ํ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์๋ค. ์ต์คํ๋ก๋ฌ์์๋ ์ง์ํ์ง ์๋๋ค.
undefined null๊ณผ ๊ตฌ๋ณํ์. null์ object ํ์ ์ด๋ฉฐ, ์์ง '๊ฐ'์ด ์ ํด์ง์ง ์์ ๊ฒ์ ์๋ฏธํ๋ค. ๋ํ, undefined๋ null๊ณผ๋ ๋ฌ๋ฆฌ 'ํ์ '์ด ์ ํด์ง์ง ์์ ๊ฒ์ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ์๋ฐ์คํฌ๋ฆฝํธ์์ undefined๋ ์ด๊ธฐํ๋์ง ์์ ๋ณ์๋ ์กด์ฌํ์ง ์๋ ๊ฐ์ ์ ๊ทผํ ๋ ๋ฐํ๋๋ค.
null๊ณผ undefiend๋ ๋๋ฑ ์ฐ์ฐ์(==)์ ์ผ์น ์ฐ์ฐ์(===)๋ก ๋น๊ตํ ๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ์ด ๋ค๋ฅด๋ฏ๋ก ์ฃผ์ํ์.
์ฐธ์กฐ๋ฐ์ดํฐ ํ์
์ฐธ์กฐ ๋ฐ์ดํฐ ํ์ ์๋ ๊ฐ์ฒด(object)๊ฐ ์๋ค.
ํ ๋ณํ
๋ฌต์์ ํ์
๋ณํ
์ ๋งํ๋ฉด ํน์ ํ์ ์ ๊ฐ์ ๊ธฐ๋ํ๋ ๊ณณ์ ๋ค๋ฅธ ํ์ ์ ๊ฐ์ด ์ค๋ฉด, ์๋์ผ๋ก ํ์ ์ ๋ณํํ์ฌ ์ฌ์ฉํ๋ค.
1 - "๋ฌธ์์ด";
์ฒ๋ผ ์์ ํ๋ณํ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ NaN
๊ฐ์ ๋ฐํํ๋ค.
๋ช
์์ ํ์
๋ณํ
๋ช ์์ ํ์ ๋ณํ์ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ ๊ณตํ๋ ์ ์ญ ํจ์๋ ์๋์ ๊ฐ๋ค.
Number()
String()
Boolean()
Object()
parseInt()
parseFloat()
๋ณ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ var ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
๋ง์ฝ ์ ์ธ๋์ง ์์ ๋ณ์์ ์ฌ์ฉํ๋ คํ๊ฑฐ๋ ์ ๊ทผํ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๋จ, ์ ์ธ๋์ง ์์ ๋ณ์๋ฅผ ์ด๊ธฐํํ ๊ฒฝ์ฐ์๋ ์๋์ผ๋ก ์ ์ธ์ ๋จผ์ ํ ํ ์ด๊ธฐํ๋ฅผ ์งํํ๋ค.
์..? ๊ทธ๋ฆฌ๊ณ ์ปดํ์ผ ๋จ๊ณ๊ฐ ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค๋ณด๋ ๋ณ์ ์ฌ์ ์ธ์ ์ปดํ์ผ ์๋ฌ๊ฐ ๋ ์๊ฐ ์์ผ๋ฏ๋ก ๊ฑ ๋ณ์ ์ฌ์ ์ธ ๋ฌธ๊ตฌ๊ฐ ๋ฌด์๋๋ค.
์ฐ์ฐ์
๋๋ฑ์ฐ์ฐ์์ ์ผ์น ์ฐ์ฐ์๋ฅผ ์ฒดํฌํ์.
๋น๊ต ์ฐ์ฐ์ | ์ค๋ช |
| ์ผ์ชฝ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ด ๊ฐ๊ณ , ๊ฐ์ ํ์ ์ด๋ฉด ์ฐธ์ ๋ฐํ. |
| ์ผ์ชฝ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ด ๊ฐ์ผ๋ฉด ์ฐธ์ ๋ฐํ. |
| ์ผ์ชฝ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ด ๊ฐ์ง ์์ผ๋ฉด ์ฐธ์ ๋ฐํ. |
| ์ผ์ชฝ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ด ๊ฐ์ง ์๊ฑฐ๋, ํ์ ์ด ๋ค๋ฅด๋ฉด ์ฐธ์ ๋ฐํ. |
์๋ฐ์คํฌ๋ฆฝํธ์์ ํผ์ฐ์ฐ์๊ฐ ๋ ๋ค ๋ฌธ์์ด์ด๋ฉด, ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ถํฐ ์ํ๋ฒณ ์์๋๋ก ๋น๊ตํ๋ค.
๋นํธ ์ฐ์ฐ์, ์ผํญ ์ฐ์ฐ์, delete, typeof ์ฐ์ฐ์๋ C, C++์ด๋ ๋์ผํ๋ค.
instanced ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ธ ๊ฐ์ฒด๊ฐ ํน์ ๊ฐ์ฒด์ ์ธ์คํด์ค์ธ์ง ์๋์ง๋ฅผ ํ์ธํด์ค๋ค.
void ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๋ก ์ด๋ค ํ์ ์ด ์ค๋์ง ์๊ด์์ด ์ธ์ ๋ undefined ๊ฐ๋ง์ ๋ฐํํ๋ค.
๋ฐ๋ณต๋ฌธ
for / in ๋ฌธ
for / in ๋ฌธ์ ํด๋น ๊ฐ์ฒด์ ๋ชจ๋ ์ด๊ฑฐํ ์ ์๋ ํ๋กํผํฐ(enumerable properties)๋ฅผ ์ํํ ์ ์๋๋ก ํด์ค๋ค. ๋ค์ ํ๋ฒ ๋งํ์ง๋ง, for / in ๋ฌธ์ ํด๋น ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๋ชจ๋ ํ๋กํผํฐ๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ์๋, ์ค์ง ์ด๊ฑฐํ ์ ์๋ ํ๋กํผํฐ๋ง์ ๋ฐํํ๋ค.
for / of ๋ฌธ
for / of ๋ฌธ์ ๋ฐ๋ณตํ ์ ์๋ ๊ฐ์ฒด(iterable objects)๋ฅผ ์ํํ ์ ์๋๋ก ํด์ฃผ๋ ๋ฐ๋ณต๋ฌธ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐ๋ณตํ ์ ์๋ ๊ฐ์ฒด์๋ Array, Map, Set, arguments ๊ฐ์ฒด ๋ฑ์ด ์๋ค.
for / of ๋ฌธ์ ์ต์คํ๋ก๋ฌ์์ ์ง์ํ์ง ์๋๋ค.
๋ฃจํ ์ ์ด - label ๋ฌธ
์ผ๋ฐ์ ์ผ๋ก ํํ์์ ๊ฒ์ฌ๋ฅผ ํตํด ๋ฃจํ๋ก ์ง์ ํ๋ฉด, ๋ค์ ํํ์์ ๊ฒ์ฌํ๊ธฐ ์ ๊น์ง ๋ฃจํ ์์ ์๋ ๋ชจ๋ ์คํ๋ฌธ์ ์คํํ๋ค. ํ์ง๋ง continue ๋ฌธ๊ณผ break ๋ฌธ์ ์ด๋ฌํ ์ผ๋ฐ์ ์ธ ๋ฃจํ์ ํ๋ฆ์ ์ฌ์ฉ์๊ฐ ์ง์ ์ ์ดํ ์ ์๊ฒ ํด์ค๋ค.
label ๋ฌธ์ ์ฌ์ฉํ๋ฉด continue ๋ฌธ๊ณผ break ๋ฌธ์ ๋์์ด ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ํน์ ์์ญ์ผ๋ก ์ด๋์ํฌ ์ ์๋ค. ๋ฌธ๋ฒ์ ์๋์ ๊ฐ๋ค.
์์๋ ์๋์ ๊ฐ๋ค.
์์1) ํ์์ ๋ํด์๋ง ๊ตฌ๊ตฌ๋จ ์ ์ฉ.
์์2) 3๋จ๊น์ง๋ง ๊ตฌ๊ตฌ๋จ ์ ์ฉ
๋ฐฐ์ด(array)
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด(array): ์ด๋ฆ๊ณผ ์ธ๋ฑ์ค๋ก ์ฐธ์กฐ๋๋ ์ ๋ ฌ๋ ๊ฐ์ ์งํฉ
๋ฐฐ์ด์ ๊ตฌ์ฑํ๋ ๊ฐ๊ฐ์ ๊ฐ์ ๋ฐฐ์ด ์์(element)๋ผ๊ณ ํ๋ฉฐ, ๋ฐฐ์ด์์์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ์ซ์๋ฅผ ์ธ๋ฑ์ค(index)๋ผ๊ณ ํ๋,
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ฐฐ์ด ์์์ ํ์ ์ด ๊ณ ์ ๋์ด ์์ง ์์ผ๋ฏ๋ก, ๊ฐ์ ๋ฐฐ์ด์ ์๋ ๋ฐฐ์ด ์์๋ผ๋ฆฌ์ ํ์ ์ด ์๋ก ๋ค๋ฅผ ์๋ ์๋ค.
๋ฐฐ์ด ์์์ ์ธ๋ฑ์ค๊ฐ ์ฐ์์ ์ด์ง ์์๋ ๋๋ฉฐ, ๋ฐ๋ผ์ ํน์ ๋ฐฐ์ด ์์๊ฐ ๋น์ด ์์ ์๋ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด์ Array ๊ฐ์ฒด๋ก ๋ค๋ค์ง๋ค.
๋ฐฐ์ด ์์ฑ
์์ฑ ๋ฐฉ์์ 3๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ๋ชจ๋ ๊ฐ์ ๊ฒฐ๊ณผ์ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ค๋ค.
var arr = [๋ฐฐ์ด์์1, ๋ฐฐ์ด์์2,...]; // ๋ฐฐ์ด ๋ฆฌํฐ๋ด์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
var arr = Array(๋ฐฐ์ด์์1, ๋ฐฐ์ด์์2,...); // Array ๊ฐ์ฒด์ ์์ฑ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
var arr = new Array(๋ฐฐ์ด์์1, ๋ฐฐ์ด์์2,...); // new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ Array ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ
๋ฐฐ์ด ์์์ ์ถ๊ฐ
๋ฐฐ์ด์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์๋ค.
push() ๋ฉ์๋์ length ํ๋กํผํฐ๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๋ฐฐ์ด์ ์ ์ผ ๋์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ค.
์ธ๋ฑ์ค์ ๋์ํ๋ ๋ฐฐ์ด ์์๊ฐ ์๋ ๋ถ๋ถ์ ๋ฐฐ์ด์ ํ(hole)์ด๋ผ๊ณ ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ฌํ ๋ฐฐ์ด์ ํ์ undefined ๊ฐ์ ๊ฐ์ง๋ ์์์ฒ๋ผ ์ทจ๊ธํ๋ค.
ํฌ์ ๋ฐฐ์ด
ํฌ์ ๋ฐฐ์ด์ด๋ ๋ฐฐ์ด์ ์ํ ์์์ ์์น๊ฐ ์ฐ์์ ์ด์ง ์์ ๋ฐฐ์ด์ ์๋ฏธํ๋ค.
์ฐ๊ด ๋ฐฐ์ด
์ซ์๋ก ๋ ์ธ๋ฑ์ค ๋์ ์ ๋ฌธ์์ด๋ก ๋ ํค(key)๋ฅผ ์ฌ์ฉํ๋ ๋ฐฐ์ด์ ์ฐ๊ด ๋ฐฐ์ด(associative array)์ด๋ผ๊ณ ํ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฐ๊ด ๋ฐฐ์ด์ ๋ณ๋๋ก ์ ๊ณตํ์ง๋ ์์ง๋ง, ์ธ๋ฑ์ค๋ก ๋ฌธ์์ด์ ์ฌ์ฉํ์ฌ ์ฐ๊ด ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด(object)๋ฅผ ๋ง๋ค ์ ์๋ค.
์ด๋ ๊ฒ ์์ฑ๋ ๋ฐฐ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด๋ถ์ ์ผ๋ก Array ๊ฐ์ฒด๊ฐ ์๋ ๊ธฐ๋ณธ ๊ฐ์ฒด๋ก ์ฌ์ ์ธ๋๋ค. ์ฆ, ์ฐ๊ด ๋ฐฐ์ด์ Array ๊ฐ์ฒด๊ฐ ์๋๋ฏ๋ก length ํ๋กํผํฐ์ ๊ฐ์ด 0 ์ด๊ณ ์ซ์๋ฅผ ์ธ๋ฑ์ค๋ก ํ์ฌ ์์์ ์ ๊ทผํ๋ฉด undefined๋ฅผ ํ์ธํ๊ฒ ๋๋ค.
ECMAScript6 ๋ถํฐ๋ ์ด๋ฌํ ๋ถํธํจ์ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ก์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ธ Map ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ์ ๊ณตํ๊ณ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด ์ฌ๋ถ ํ์ธ
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํด๋น ๋ณ์๊ฐ ๋ฐฐ์ด์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ๋ค์ ์ ๊ณตํ๊ณ ์๋ค.
Array.isArray() ๋ฉ์๋
instanceof ์ฐ์ฐ์
constructor ํ๋กํผํฐ
๋ํ Array ๊ฐ์ฒด์ constructor ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ์ฌ๋ถ๋ฅผ ํ์ธํ ์๋ ์๋ค. ์์๋ฅผ ๋ณด๋ฉด ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํจ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๋ ํ๋์ ํ์ (datatype)์ด๋ค.
๋ฐ๋ผ์ ํจ์๋ฅผ ๋ณ์์ ๋์ ํ๊ฑฐ๋, ํจ์์ ํ๋กํผํฐ๋ฅผ ์ง์ ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ๋ํ ์๋ฐ์คํฌ๋ฆฝํธ ํจ์๋ ๋ค๋ฅธ ํจ์ ๋ด์ ์ค์ฒฉ๋์ด ์ ์๋ ์๋ ์๋ค.
๊ฐ์ผ๋ก์์ ํจ์
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์๋ ๋ฌธ๋ฒ์ ๊ตฌ๋ฌธ์ผ๋ฟ๋ง ์๋๋ผ ๊ฐ(value)์ด๊ธฐ๋ ํ๋ค. ๋ฐ๋ผ์ ํจ์๊ฐ ๋ณ์์ ๋์ ๋ ์๋ ์์ผ๋ฉฐ, ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋ ์๋ ์๋ค.
๋ณ์ ์ค์ฝํ
์ง์ญ ๋ณ์(local variable)
ํจ์ ๋ด์์ ์ ์ธ๋ ๋ณ์. ๋ณ์๊ฐ ์ ์ธ๋ ํจ์ ๋ด์์๋ง ์ ํจํ๋ฉฐ, ํจ์๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง๋ค.
์ ์ญ ๋ณ์(global variable)
์ ์ญ ๋ณ์(global variable)๋ ํจ์์ ์ธ๋ถ์์ ์ ์ธ๋ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์ด๋ฌํ ์ ์ญ ๋ณ์๋ ํ๋ก๊ทธ๋จ์ ์ด๋ ์์ญ์์๋ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ์น ํ์ด์ง๊ฐ ๋ซํ์ผ๋ง ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํ ๋์๋ ๋ฐ๋์ var ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํด์ผ ํ๋ค. ํจ์ ๋ด๋ถ์์ var ํค์๋๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด, ํด๋น ๋ณ์๋ ์ง์ญ ๋ณ์๊ฐ ์๋ ์ ์ญ ๋ณ์๋ก ์ ์ธ๋๋ค.
๋ํ, ์ ์ญ ๋ณ์์ ๊ฐ์ ์ด๋ฆ์ ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํ๋ฉด, ํด๋น ๋ธ๋ก์์๋ ํด๋น ์ด๋ฆ์ผ๋ก ์ง์ญ ๋ณ์๋ง์ ํธ์ถํ ์ ์๋ค.
๋ฌผ๋ก ์ด ๊ฒฝ์ฐ์ ์ ์ญ ๋ณ์๊ฐ window ๊ฐ์ฒด์ ํ๋กํผํฐ์์ ๋ช ์ํ๋ฉด ์ ์ญ ๋ณ์๋ฅผ ํธ์ถํ ์๋ ์๋ค.
ํจ์ ์ค์ฝํ
๋ธ๋ก(block)์ด๋ ์ฝ๋ ๋ด์์ ์ค๊ดํธ({})๋ก ๋๋ฌ์ธ์ธ ๋ถ๋ถ์ ๊ฐ๋ฆฌํค๋ฉฐ, ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ๋ธ๋ก ๋ด์์ ์ ์๋ ๋ณ์๋ฅผ ๋ธ๋ก ์ธ๋ถ์์๋ ์ ๊ทผํ ์ ์๋ค.
ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ ํจ์๋ฅผ ๋ธ๋ก ๋์ ์ฌ์ฉํ๋ค.
'์ ์ญ ํจ์'๋ ๋ชจ๋ ์ ์ญ ๋ณ์์ ์ ์ญ ํจ์์ ์ ๊ทผํ ์ ์๋ค.
๋ฐ๋ฉด, ๋ค๋ฅธ ํจ์ ๋ด์ ์ ์๋ '๋ด๋ถ ํจ์'๋ ๊ทธ ํจ์์ ๋ถ๋ชจ ํจ์(parent function)์์ ์ ์๋ ๋ชจ๋ ๋ณ์ ๋ฐ ๋ถ๋ชจ ํจ์๊ฐ ์ ๊ทผํ ์ ์๋ ๋ชจ๋ ๋ค๋ฅธ ๋ณ์๊น์ง๋ ์ ๊ทผํ ์ ์๋ค.
์๋ ์์๋ฅผ ์ฐธ๊ณ .
ํจ์ ํธ์ด์คํ (hoisting)
์๋ฐ์คํฌ๋ฆฝํธ์์ ํจ์์ ์ ํจ ๋ฒ์๋ผ๋ ๊ฒ์ ํจ์ ์์์ ์ ์ธ๋ ๋ชจ๋ ๋ณ์๋ ํจ์ ์ ์ฒด์ ๊ฑธ์ณ ์ ํจํ๋ค๋ ์๋ฏธ์ด๋ค.
๊ทธ๋ฐ๋ฐ ์ด ์ ํจ ๋ฒ์์ ์ ์ฉ์ด ๋ณ์๊ฐ ์ ์ธ๋๊ธฐ ์ ์๋ ๋๊ฐ์ด ์ ์ฉ๋๋ค. ์ด๋ฌํ ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง์ ํจ์ ํธ์ด์คํ (hoisting)์ด๋ผ๊ณ ํ๋ค. ์ฆ, ์๋ฐ์คํฌ๋ฆฝํธ ํจ์ ์์ ์๋ ๋ชจ๋ ๋ณ์์ ์ ์ธ์ ํจ์์ ๋งจ ์ฒ์์ผ๋ก ์ด๋๋ ๊ฒ์ฒ๋ผ ๋์ํ๋ค.
์๋ ์์ ๋ฅผ ๋ณด์.
โ ์์ ์ ์ญ๋ณ์๋ฅผ ์ฐธ์กฐํ ๊ฒ ๊ฐ์ง๋ง ์๋๋ค. ํธ์ด์คํ ์ด ์ ์ฉ๋์ด ์๋์ฒ๋ผ ์ฝ๋๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ.
๋งค๊ฐ๋ณ์์ ์ธ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํจ์๋ฅผ ์ ์ํ ๋๋ ๋งค๊ฐ๋ณ์์ ํ์ ์ ๋ฐ๋ก ๋ช ์ํ์ง ์๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋์๋ ์ธ์(argument)๋ก ์ ๋ฌ๋ ๊ฐ์ ๋ํด ์ด๋ ํ ํ์ ๊ฒ์ฌ๋ ํ์ง ์๋๋ค.
ํจ์๋ฅผ ํธ์ถํ ๋ ํจ์์ ์ ์๋ณด๋ค ์ ์ ์์ ์ธ์๊ฐ ์ ๋ฌ๋๋๋ผ๋, ๋ค๋ฅธ ์ธ์ด์๋ ๋ฌ๋ฆฌ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์ง ์๋๋ค.
์ด ๊ฐ์ ๊ฒฝ์ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ ๋ฌ๋์ง ์์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์์ ์๋์ผ๋ก undefined ๊ฐ์ ์ค์ ํ๋ค.
arguments ๊ฐ์ฒด
๋ง์ฝ ํจ์์ ์ ์๋ณด๋ค ๋ ๋ง์ ์์ ์ธ์๊ฐ ์ ๋ฌ๋๋ฉด, ๋งค๊ฐ๋ณ์์ ๋์ ๋์ง ๋ชปํ ์ธ์๋ค์ ์ฐธ์กฐํ ๋ฐฉ๋ฒ์ด ์๊ฒ ๋๋ค.
ํ์ง๋ง arguments ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด, ํจ์๋ก ์ ๋ฌ๋ ์ธ์์ ์ด ๊ฐ์๋ฅผ ํ์ธํ๊ฑฐ๋, ๊ฐ๊ฐ์ ์ธ์์๋ ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.
arguments ๊ฐ์ฒด๋ ํจ์๊ฐ ํธ์ถ๋ ๋ ์ ๋ฌ๋ ์ธ์๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ์ ์ฅํ๊ณ ์๋ค. ์ฒซ ๋ฒ์งธ ์ธ์๋ arguments[0]์ ์ ์ฅ๋๋ฉฐ, ๋ค์ ์ธ์๋ arguments[1]์ ์ ์ฅ๋๋ค. ๋ํ, ์ธ์์ ์ด ๊ฐ์๋ arguments ๊ฐ์ฒด์ length ํ๋กํผํฐ์ ์ ์ฅ๋๋ค.
๋ํดํธ ๋งค๊ฐ๋ณ์์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์
ECMAScript 6๋ถํฐ ์๋กญ๊ฒ ์ ์๋ ๋งค๊ฐ๋ณ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ํดํธ ๋งค๊ฐ๋ณ์(default parameter) ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ undefined ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค.
๋๋จธ์ง ๋งค๊ฐ๋ณ์(rest parameter) ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ ์๋ต ์ ๋์ฌ(...)๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ์์น์ ์ธ์๋ถํฐ ๋ง์ง๋ง ์ธ์๊น์ง๋ฅผ ํ ๋ฒ์ ์ง์ ํ ์ ์๋ค. ์ด๊ฑด ์์ ๋ฅผ ๋ณด์.
๋ฏธ๋ฆฌ ์ ์๋ ์ ์ญ ํจ์(predefined functions)
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฌ์ฉ์์ ํธ์๋ฅผ ์ํด ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ๋ฌ ์ ์ญ ํจ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ ์ ๊ณตํ๋ค. ์ด๋ฌํ ์ ์ญ ํจ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ด๋ค ํ์ ์ ๊ฐ์ฒด์์๋ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฏธ๋ฆฌ ์ ์๋์ด ์๋ ์ ์ญ ํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
eval() : ๋ฌธ์์ด๋ก ํํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์คํํ๋ ํจ์
isFinite() : ์ ๋ฌ๋ ๊ฐ์ด ์ ํํ ์์ธ์ง๋ฅผ ๊ฒ์ฌํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ. ์ธ์๋ก ์ ๋ฌ๋ ๊ฐ์ด ์ซ์๊ฐ ์๋๋ผ๋ฉด ์ซ์๋ก ๋ณํํ์ฌ ๊ฒ์ฌ.
isNaN()
parseFloat()
parseInt()
decodeURI() : encodeURI() ํจ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค์ด์ง URI๋ฅผ ํด๋ ํ๋ค.
decodeURIComponent()
encodeURI()
encodeURIComponent()
escape()
unescape()
Number()
String()
์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฉ์๋๋ฅผ ์ฐธ์กฐํ ๋ ๋ฉ์๋ ์ด๋ฆ ๋ค์ ๊ดํธ(())๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด, ๋ฉ์๋๊ฐ ์๋ ํ๋กํผํฐ ๊ทธ ์์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ํ๋กํผํฐ ๊ทธ ์์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ฉด ํด๋น ๋ฉ์๋์ ์ ์ ๊ทธ ์์ฒด๊ฐ ๋ฐํ๋๋ค.
๊ฐ์ฒด์ ์์ฑ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฆฌํฐ๋ด ํ๊ธฐ(literal notation)๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ
์์ฑ์ ํจ์(constructor function)๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ
Object.create() ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋ฐฉ๋ฒ Object.create() ๋ฉ์๋๋ ์ง์ ๋ ํ๋กํ ํ์ (prototype) ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ค๋ค.
๋ฐ๋ผ์ ์ด ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ํ๋กํ ํ์ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ช ์ํ ์ ์์ผ๋ฏ๋ก, ์๋นํ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
Object.create() ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก๋ ํ๋กํ ํ์ ์ผ๋ก ์ฌ์ฉํ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ค. ๋ ๋ฒ์งธ ์ธ์๋ก๋ ์๋ก์ด ๊ฐ์ฒด์ ์ถ๊ฐํ ํ๋กํผํฐ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
ํ๋กํ ํ์ - ์์
C#์ด๋ C++๊ณผ ๊ฐ์ ํด๋์ค ๊ธฐ๋ฐ(class-based)์ ๊ฐ์ฒด ์งํฅ ์ธ์ด์๋ ๋ฌ๋ฆฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ(prototype-based)์ ๊ฐ์ฒด ์งํฅ ์ธ์ด์ด๋ค.
๋ฐ๋ผ์ ์์ ๋ฑ์ ๊ฐ๋ ์ด ์ข ๋ค๋ฅธ๋ฐ, ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ํ์ฌ ์กด์ฌํ๊ณ ์๋ ๊ฐ์ฒด๋ฅผ ํ๋กํ ํ์ ์ผ๋ก ์ฌ์ฉํ์ฌ, ํด๋น ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ์ฌ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ ์์์ด๋ผ๊ณ ํ๋ค.
ํ๋กํ ํ์
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ํ๋กํ ํ์ (prototype)์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ชจ๋ ๊ฐ์ฒด๋ ๊ทธ๋ค์ ํ๋กํ ํ์ ์ผ๋ก๋ถํฐ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์์ ๋ฐ๋๋ค.
์ด์ฒ๋ผ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ๊ฐ์ฒด๋ ์ต์ํ ํ๋ ์ด์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก๋ถํฐ ์์์ ๋ฐ์ผ๋ฉฐ, ์ด๋ ์์๋๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฐ์ฒด๋ฅผ ํ๋กํ ํ์ (prototype)์ด๋ผ๊ณ ํ๋ค.
์ ๋จ ํ๋, Object.prototype ๊ฐ์ฒด๋ ์ด๋ ํ ํ๋กํ ํ์ ๋ ๊ฐ์ง์ง ์์ผ๋ฉฐ, ์๋ฌด๋ฐ ํ๋กํผํฐ๋ ์์๋ฐ์ง ์๋๋ค.
ํ๋กํ ํ์ ์ฒด์ธ(prototype chain)
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ์ฒด ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํด ์์ฑ๋ ๊ฐ์ ํ์ ์ ๊ฐ์ฒด๋ค์ ๋ชจ๋ ๊ฐ์ ํ๋กํ ํ์ ์ ๊ฐ์ง๋ค.
๋ํ, new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ์์ฑํ ๊ฐ์ฒด๋ ์์ฑ์์ ํ๋กํ ํ์ ์ ์์ ์ ํ๋กํ ํ์ ์ผ๋ก ์์๋ฐ๋๋ค.
์ด๋ฐ ํ๋กํ ํ์ ์์์ ๊ฐ์ ์ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ํ๋กํ ํ์ ์ฒด์ธ์ด๋ผ๊ณ ํ๋ค. Object.prototype ๊ฐ์ฒด๋ ์ด๋ ํ ํ๋กํ ํ์ ๋ ๊ฐ์ง์ง ์์ผ๋ฉฐ, ์๋ฌด๋ฐ ํ๋กํผํฐ๋ ์์๋ฐ์ง ์๋๋ค๊ณ ํ์๋๋ฐ, Object.prototype ๊ฐ์ฒด๋ ์ด๋ฌํ ํ๋กํ ํ์ ์ฒด์ธ์์๋ ๊ฐ์ฅ ์์์ ์กด์ฌํ๋ ํ๋กํ ํ์ ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Math ๊ฐ์ฒด
Math ๊ฐ์ฒด๋ ์ํ์์ ์์ฃผ ์ฌ์ฉํ๋ ์์์ ํจ์๋ค์ ๋ฏธ๋ฆฌ ๊ตฌํํด ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ค ๋ด์ฅ ๊ฐ์ฒด์ด๋ค. Math ๊ฐ์ฒด๋ ๋ค๋ฅธ ์ ์ญ ๊ฐ์ฒด์๋ ๋ฌ๋ฆฌ ์์ฑ์(constructor)๊ฐ ์กด์ฌํ์ง ์๋๋ค. ๋ฐ๋ผ์ ๋ฐ๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์์๋ Math ๊ฐ์ฒด์ ๋ชจ๋ ๋ฉ์๋๋ ํ๋กํผํฐ๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ Math ๋ฉ์๋๋ ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฅธ ๊ฒฐ๊ด๊ฐ์ ์ป์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์ฌ์ง์ด ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ธํฐํ๋ฆฌํฐ๋ผ๋ ์ด์์ฒด์ ๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๊ฒฐ๊ด๊ฐ์ ๋ฐํํ ์ ์๋ค. ๋ฐ๋ผ์ ์์ฃผ ์ ํํ ๊ฒฐ๊ด๊ฐ์ด ํ์ํ ์์ ์๋ Math ๋ฉ์๋๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
์ฐ์ ๋ฒผ๋ฅด๊ณ ๋ฒผ๋ฅด๋ javascript ์ ๋ํ ํ์ต์ ํ ์ ์์ด์ ์ข์์ต๋๋ค. backbone.js๋ฅผ ํ์ตํ ์ ์๋ ์ ๋๋ก๋ง ๋ฑ ํ์ด์ผ๊ฒ ์ต๋๋ค.
ํ ๋ฏธํ ๋ ํ์๋ค์ ๋ ๋ คํด์ ๊ณต์ ํ ๋งํ ์ด์๋ฅผ ๊ณต์ ๋ฐ๊ณ , ๋ค์ ํ์ตํ ๊ฒ์ ํ์ธํ๋ ํ๋ฆ์ด ์ ์ ์ฐฉ๋ ๊ฒ ๊ฐ๋ค์.
ํ์ต ์ผ์ ์ ๊ฒฝ์ฐ Rails์ ์ค์๊ฐ ์ฑํ ์ ๋ํ ๋ด์ฉ๊ณผ backbone.js์ ๋ํด์ ์ด๋ป๊ฒ ํ์ต์ ์ด์ด๋๊ฐ์ง ์ ํ๊ณ , ํ์ต ๋ฐฉ์์ ๊ฒฝ์ฐ ๊ฐ์ ์ด ํ์ํ๋ค ํ๋จํ์ฌ 1) ๊ฐ์ ๋ก ๋์ค์ฝ๋ ์ฐธ์ฌ์๊ฐ๋ ์ ํ๊ธฐ 2) ํ์ต์์ค๋ฅผ ํต์ผํ๊ธฐ ๋ฅผ ์คํํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ์ ๋๋ฉด ์ข๊ฒ ๋ค์.
๋ค์ ํ์ต ๊ณํ
javascript ๊ฐ๋ ๋ผ๊ธฐ. backbone js ํ์ต๊ฐ๋ฅํ ์์ค์ผ๋ก.
Last updated