Higher Order Function
JavaScript์์ ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ด๊ธฐ์ ๋ณ์๋ฅผ ํ ๋นํ ์ ์์
ํจ์ ํํ์์ ํ ๋น ์ ์ ์ฌ์ฉํ ์ ์์
square(7); -> Reference Error
ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด์ ํน์ง์ ๊ฐ์ง๊ธฐ์ ์๋์ฒ๋ผ ๊ฐ์ฒด ์์ฑ์ ๊ฐ์ผ๋ก ํ ๋น๋ ์ ์์
2. ๊ณ ์ฐจํจ์์ ์ดํด
์ ์: ํจ์๋ฅผ ์ ๋ฌ์ธ์(argument)๋ก ๋ฐ์ ์ ์๊ณ , ํจ์๋ฅผ returnํ ์ ์๋ ํจ์
๋ค๋ฅธ ํจ์(caller)์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌ๋๋ ํจ์๋ฅผ ์ฝ๋ฐฑ ํจ์ (callback function)๋ผ๊ณ ํจ
์ฝ๋ฐฑ ํจ์๋ฅผ ์ ๋ฌ๋ฐ์ ๊ณ ์ฐจํจ์(caller)๋ ํจ์ ๋ด๋ถ์์ ์ด ์ฝ๋ฐฑํจ์๋ฅผ ํธ์ถ(invoke)ํ ์ ์๊ณ , ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ฐฑํจ์์ ์คํ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์๋ ์์
ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์๋ ์ปค๋งํจ์ ๋ผ๊ณ ํ๋ฉฐ, ์ด ์ฉ์ด๋ฅผ ์ฌ์ฉํ ๋๋ 'ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๋ ํจ์'์๋ง ํ์ ํด ์ฌ์ฉํ๊ธฐ๋ ํจ. ์ฆ, ๊ณ ์ฐจํจ์๊ฐ ์ปค๋งํจ์๋ฅผ ํฌํจํ๋ ๊ฒฉ.
์ ๋ฆฌํ์๋ฉด, 'ํจ์๋ฅผ ๋ฆฌํดํ๋ ํจ์'์ 'ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๋ ํจ์' ๋ชจ๋ ๊ณ ์ฐจํจ์๋ก ์ฌ์ฉ
a. ๋ค๋ฅธ ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๋ ๊ฒฝ์ฐ
b. ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ
c. ํจ์๋ฅผ ์ธ์๋ก ๋ฐ๊ณ , ํจ์๋ฅผ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ
3. ๋ด์ฅ ๊ณ ์ฐจ ํจ์
JavaScript์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ ๊ณ ์ฐจํจ์๊ฐ ์ฌ๋ฌ ๊ฐ ์๋๋ฐ, ๊ทธ ์ค ๋ฐฐ์ด ๋ฉ์๋๋ค ์ค ์ผ๋ถ๊ฐ ๋ํ์ ์ธ ๊ณ ์ฐจํจ์์ ํด๋น๋จ.
๋ฐฐ์ด์ filter ๋ฉ์๋๋ ๋ชจ๋ ๋ฐฐ์ด์ ์์ ์ค ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ฅผ '๊ฑธ๋ฌ๋ด๋' ๋ฉ์๋
์ฌ๊ธฐ์ ๊ฑธ๋ฌ๋ด๋ ๊ธฐ์ค์ด ๋๋ ํน์ ์กฐ๊ฑด์ filter ๋ฉ์๋์ ์ ๋ฌ์ธ์๋ก ์ ๋ฌ๋๋ฉฐ, ํํ๋ ํจ์ ํํ์.
๋ฐ๋ผ์ filter ๋ฉ์๋๋ ๊ฑธ๋ฌ๋ด๊ธฐ ์ํ ์กฐ๊ฑด์ ๋ช ์ํ ํจ์๋ฅผ ์ ๋ฌ์ธ์๋ก ๋ฐ๊ธฐ์ ๊ณ ์ฐจํจ์.
filter ํ์ฉ ์ ์๋ ๊ณผ์ ์ ๊ธฐ์ตํ ๊ฒ
๋ฐฐ์ด์ ๊ฐ ์์๊ฐ
ํน์ ๋ ผ๋ฆฌ (ํจ์)์ ๋ฐ๋ฅด๋ฉด, ์ฌ์ค(true)์ผ ๋
๋ฐ๋ก ๋ถ๋ฅํ๋ค (filter)
Last updated