평가란?
코드가 계산 되어 값을 만드는 것을 의미한다.
일급이란?
아래의 항목에 해당 되는 것을 의미한다.
- 일급은 값으로 다룰 수 있다.
- 일급은 변수에 담을 수 있다.
- 일급은 함수의 인자로 사용이 가능하다.
- 일급은 함수의 결과로 사용 될 수 있다.
// a와 10은 변수에 담을 수도, 값으로 다룰 수 있어 일급이다.
const a = 10
// abc()와 a, def는 모두 일급이다.
const abc = a => a + 10
const def = abc(a)
일급 함수란
일급으로 다뤄지는 함수로, 값으로 다룰 수 있다.
JavaScript에서 함수가 일급인 것은 조합성과 추상화의 도구로 사용 할 수 있다는 것이다.
// 함수 a => a + 5는 변수 add에 저장 할 수 있기에, 1급이다.
const add = a => a + 5
console.log(add) // a => a + 5
console.log(add(5)) // 10
const f1 = () => () => 1
console.log(f1()) // () => 1
// 함수는 일급이기에, 값으로 취급되어, 인자로 넣을 수 있다.
const f2 = f1()
console.log(f2) // () => 1
console.log(f2()) // 1
고차함수란?
함수를 값으로 다루는 함수다.
고차 함수에는 함수를 매개 변수로 받는 함수와, 함수를 만들어 리턴하는 함수가 있다.
함수를 매개 변수로 받는 함수의 예
/* 예시 1 */
// f1은 함수 f를 매개변수로 받아서 1의 매개변수를 넣어 실행
const f1 = f => f(1)
// f2는 매개 변수 a를 받아 a + 2를 리턴하는 함수
const f2 = a => a + 2
// f1에 f2를 넣어 실행하여, f2 매개 변수에 1를 담는다.
console.log(f1(f2)) // 3
// f1(f2)는 f => (1) => 1 + 2의 구조다.
/* 예시 2 */
// times는 함수 f와 n을 매개 변수로 받아 f 함수를 매개변수 i를 넣어 n번 실행시킨다.
const times = (f, n) => {
let i = 1
while(++i < n) f(i)
}
times(console.log, 3) //0, 1, 2
times(a => console.log(a+10), 4) //10, 11, 12, 13
함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴하는 함수)의 예
const addMaker = a => b => a + b
// 함수 add는 addMaker의 매개변수인 a(10)을 기억하게 된다.
const add = addMaker(10)
console.log(add) // b => a + b
console.log(add(5) // 15
클로저란?
함수가 만들어진 환경 a와 함수 자체를 통칭하는 용어
'F.E > JavaScript' 카테고리의 다른 글
[JavaScript] JS 표준 내장 객체, SET (0) | 2022.06.11 |
---|---|
[JavaScript] 비동기 처리 - Promise (0) | 2022.06.09 |
[JavaScript] 비동기 내장 통신 Fetch (0) | 2022.06.04 |
[JavsScript] 비동기처리 - Callback Function (0) | 2022.05.18 |
[JavaScript] ES6 문법(1) (0) | 2022.05.05 |