๋ฐ์ํ
๐ ์ค๋ ๋ฐฐ์ด ๊ฒ
โ๏ธ ๋๊ธฐ, ๋น๋๊ธฐ ๋ฐฉ์
๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ธฐ์ ์์, ๋๊ธฐ์ ๋น๋๊ธฐ ๋ฐฉ์์ ์ฐจ์ด์ ์ ๋ํด ๋จผ์ ๋ฐฐ์ ๋ค. ๋๊ธฐ(sync)๋ ํ์ฌ ์คํ์ค์ธ ์ฝ๋๋ถํฐ ์๋ฃํ๊ณ ๋ค์ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์, ๋น๋๊ธฐ(async)๋ ํ์ฌ ์คํ ์ค์ธ ์ฝ๋๊ฐ ์๋ฃ๋ ์ง์๋ ์๊ด์์ด, ๋ฐ๋ก ๋ค์ ์ฝ๋๋ก ๋์ด๊ฐ๋ ๋ฐฉ์์ด๋ค. ๋ ๋์๊ฐ์๋ Timer API๋ฅผ ํตํด ๋น๋๊ธฐ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋ฐฐ์ ๋ค.
โ๏ธ callback ํจ์
์ผ๋ง์ ์๋ callbackํจ์์ ๋ํด ๋ฐฐ์ฐ๊ธด ํ์๋๋ฐ, ์ฌ์ฉํ๋๋ฐ ๋ฌด๋ฆฌ๊ฐ ์์ด์ ๊ทธ ๋๋ ๊ทธ๋ฅ ์ธ์๋ก ์ฐ์ด๋ ํจ์ ์ ๋๋ก ์ดํดํ๊ณ ๋์ด๊ฐ์๋ค. ๊ทผ๋ฐ ๋น๋๊ธฐ ๋ฐฉ์๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ callbackํจ์๋ฅผ ํ์ฉํ๋ ๋ถ๋ถ์์ ๋ญ๊ฐ ๋งํ๋ ๋๋์ด ๋ค์ด์ ๋ค์ ์ฐพ์๋ดค๋ค. ์ ๊ณผ๋ ๋ค๋ฅด๊ฒ ํด๋ก์ ๋ ์ค์ฝํ๊ฐ์ ๊ฐ๋ ๋ ๋ฐฐ์์, ์ด๋ค์์ผ๋ก ์ฌ์ฉ๋๋์ง ๊ทธ๋๋ณด๋จ ์ฝ๊ฒ ์ดํดํ ์ ์์๋ค. ๊ทธ๋๋ ์ด ๋ถ๋ถ์ ๋ค๋ฅธ์ฌ๋ํํ ๋ ์ค๋ช ํด์ค ์ ์์ ์ ๋๋ก ๋ ์ต์ํด์ง๊ฒ ๋ ธ๋ ฅํด์ผ๊ฒ ๋ค๐ง
โ๏ธ๋ฉ๋ชจ์ด์ ์ด์
๋ฉ๋ชจ์ด์ ์ด์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋ฌ์ ๋ค์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๋ ์ ์ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฌ์ฉํด ๋น ๋ฅด๊ฒ ์คํํ๋ ๊ธฐ๋ฒ์ด๋ค. ๋ง ๊ทธ๋๋ก ๊ฒฐ๊ณผ๋ฅผ '๋ฉ๋ชจ'ํด๋๋ ๊ฒ์ด๋ค. JavaScript์์๋ ํด๋ก์ ๊ฐ๋ ์ ์ด์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ์ ์ด์ ์ ๊ตฌํํ ์ ์๋ค. ๋ฐ๋ณตํด์ ์คํ๋๋ ์ฝ๋ฐฑํจ์๊ฐ ์ธ๋ถ์ ์๋ ์ ์ฅ ๊ณต๊ฐ์ ์ ๊ทผํ ์ ์๋๋ก ๋ง๋ค๋ฉด ๋๋ค. ํจ์๊ฐ ์คํ๋ ๋๋ง๋ค ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๊ฐ์ฒดํํ๋ก ๋ง๋ค์ด๋๊ณ , ํจ์๊ฐ ์คํ๋ ๋๋ง๋ค ์ด๋ฏธ ์ ์ฅ๋ ๊ฐ์ด ์๋๋ฉด ๊ทธ ๊ฐ์ ๊ฐ์ฒด์ ์ถ๊ฐํ๊ฒ ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ์ ์ด์ ์ ์ฝ๋๋ก ์์ฑํด๋ณด์๋ค.
โ๏ธ ํจ์(Function) vs ๋ฉ์๋(Method)
์ฝ๋ฐฑํจ์์ ๋ํด ๊ณต๋ถํ๋ค๊ฐ, '์ฝ๋ฐฑํจ์๋ก ์ด๋ค ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ ๋ฌํด๋ ํธ์ถ๋ ๋๋ ํจ์๋ก ํธ์ถ๋๋ค'๋ ๋ง์ด ์์ด์ ํจ์์ ๋ฉ์๋์ ์ฐจ์ด์ ์ด ๋ญ์์ง..?ํ๊ณ ์๊ฐํ๊ฒ ๋์๋ค. ๋๋ค ์ฝ๋๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ์ ๋จ์๋ผ๋ ๊ณตํต๋ ํน์ง ๋๋ฌธ์ ์ธ์ ํจ์๋ผ๊ณ ํ๊ณ , ์ธ์ ๋ฉ์๋๋ผ๊ณ ํ ์ง ์ ํํ๊ฒ ์ธ์งํ์ง ๋ชปํด์๋ ๊ฒ ๊ฐ๋ค.
ํจ์ : ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌ, ์ฒ๋ฆฌ ํ ์ฌ์ฉ์๊ฐ ์ํ๋ ๊ฒฐ๊ณผ ๋ฐํ, function() ํํ๋ก ์ฌ์ฉ
๋ฉ์๋ : ํด๋์ค์ ์ข ์๋ ํจ์(ํด๋์ค ํจ์), ํด๋น ํด๋์ค์ ๋ํ ๊ฐ์ฒด๊ฐ ์์ฑ๋์ด์ผ ์ฌ์ฉ ๊ฐ๋ฅ, object.method() ํํ๋ก ์ฌ์ฉ
์ ๋ฆฌํ๋ฉด, ๋์ class์ ์ข ์๋์ด ์๋์ง ์ฌ๋ถ๋ก ๊ตฌ๋ถ๋๋ฉฐ, ํธ์ถ ๋ฐฉ์๋ ๋ค๋ฅด๋ค. ํจ์๊ฐ ์กฐ๊ธ๋ ํฌ๊ด์ ์ธ ๊ฐ๋ ์ด๋ค! ์ฌ์ค ์ง๊ธ๊น์ง๋ ๊ทธ๋ฅ ํํ๋ง ๋ณด๊ณ ๊ตฌ๋ถํด์๋๋ฐ ์ด๋ฒ๊ธฐํ์ ๋์ด ์ด๋ค ์ ์์ ๋ค๋ฅธ๊ฑด์ง ๋ช ํํ ์๊ฒ ๋์๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ ์ฝ๋ฐฑํจ์ = ํด๋ก์
๋น๋๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด, ํจ์๊ฐ ์คํ๋๊ณ ํน์ ์์ ์ ์ฝ๋ฐฑํจ์๊ฐ ๋ถ๋ ค์ง๋ค. ์ฝ๋ฐฑํจ์๋ ์์ ์ด ํฌํจ๋ ํจ์ ํ๊ฒฝ์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์, ์ฝ๋ฐฑํจ์๋ ํด๋ก์ ๋ผ๊ณ ํ ์ ์๋ค!
โ๏ธ reduce ๋ฉ์๋
reduce ๋ฉ์๋ ์์ return๊ฐ์ด ์์ด์ผ ๋ค์ ๋์ฐ๊ธฐ(accumulator)์ ์ ์ฉ์ด ๋๋ค! return๊ฐ์ด ์์ ๊ฒฝ์ฐ์๋ undefined๊ฐ ๋ฐํ๋๋ค!
โ๏ธ Timer API
setTimeout(callback, millisecond) : ์ผ์ ์๊ฐ ํ์ ํจ์๋ฅผ ํ๋ฒ ์คํ
clearTimeout() : ์คํ์ค์ธ setTimeout ์ข ๋ฃ
setInterval(callback, millisecond) : ์ผ์ ์๊ฐ์ ๊ฐ๊ฒฉ์ผ๋ก ํจ์๋ฅผ ๋ฐ๋ณต ์คํ
clearInterval(timerId) : ๋ฐ๋ณต ์คํ ์ค์ธ setInterval ์ข ๋ฃ
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ ๋ฐ์ฝ๋ ์ดํฐ ํจํด
๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์ข์ ์ฝ๋ ์ค๊ณ๋ฅผ ์ํ ๋์์ธ ๋ฐฉ๋ฒ๋ก ์ธ '๋์์ธ ํจํด' ์ค ํ๋์ด๋ค. ๊ทธ ์ค์์๋ ๊ธฐ๋ณธ์ ์ธ ๊ฐ์ฒด์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ์ฐํ๊ฒ ๋์ ์ผ๋ก ์ถ๊ฐํ ์ ์๋ ํจํด์ธ๋ฐ, ๊ธฐ์กด ๊ฐ์ฒด์ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ํ๋์ ์ถ๊ฐํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค๊ณ ํ๋ค. ํด๋ก์ ์๋ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์์ ์ด๋ก ๊ณผ ๊ตฌํ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ด์ผ๊ฒ ๋ค.
โ๏ธ ๋ฉ๋ชจ์ด์ ์ด์ , ์ฌ๊ท
์ฐพ์๋ณด๋ ๋ฉ๋ชจ์ด์ ์ด์ ํจํด์ ์ฌ๊ท๋ฅผ ์ด์ฉํด ๊ตฌํํ ์๋ ์๋ค๊ณ ํด์, ์ฌ๊ท์ ๋ํด์ ๊ณต๋ถํ ํ ๋ค์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๋ ค๊ณ ํ๋ค.
โ๏ธ Timer API์ ์ฐ์
setInterval, setTimeout ๋ฑ์ Timer API๋ฅผ ์ฌ์ฉํด ๋น๋๊ธฐ์ ์ผ๋ก ์์ ๋ค์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ณต์กํ์ง๋ง ๋ ํจ์จ์ ์ด๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด ์ด๋ฐ ํจ์จ์ ์ธ ๋ฐฉ์์ ์ธ์ ์ด๋์ ์ด๋ค์์ผ๋ก ํ์ฉํ ์ ์๋์ง์ ๋ํด์๋ ๊ถ๊ธํด์ก๋ค.
โ๏ธ requestAnimationFrame
Javascipt๋ก ๋์์ ๋ฑ์ ์์ง์ด๋ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ๊ณ ์ถ์ ๋, ์ฌ๋์ด ์ธ์งํ ์ ์๋ ์ต๋ ๋ฒ์์ธ 16.6ms(1000ms / 60frame)๋ง๋ค ํ๋ ์์ ์ฐ์ด๋ด๊ธฐ ์ํด setInterval์ด๋ requestAnimationFrame๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ์ ๋๋ฉ์ด์ ์ด ๋ณต์กํด์ง๋ฉด ๋ถํ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ์๋ requestAnimationFrame๋ฅผ ์ฐ๋ ๊ฒ์ด ์ข๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋๋ฉ์ด์ ๋ ๋ ๋ถ๋๋ฝ๊ฒ ๋์ํ๋ค๊ณ ํ๋ค. ์ผ๋จ ์ด์ ๋๋ก๋ง ์์๋๊ณ ์๊ฐ์ด ๋จ๋๋ค๋ฉด ์ด๋ป๊ฒ ์ฌ์ฉํ๋ ์ง ์ข ๋ ์์๋ด์ผ๊ฒ ๋ค.
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
210101_TIL (๋ณต์ตํ๋ ๋ ) (0) | 2021.01.02 |
---|---|
201231_TIL (์ฌ๊ท๋ฌธ์ ํ๊ธฐ) (0) | 2020.12.31 |
201229_TIL (0) | 2020.12.30 |
201228_TIL (0) | 2020.12.29 |
201227_TIL (0) | 2020.12.28 |
๋๊ธ