본문 바로가기

함수형프로그래밍 with 3

제너레이터와 이터레이터 제너레이터 이터레이터이자 이터러블을 생성하는 함수를 말한다. function *gen() { yield 1 yield 2 yield 3 return 100 } let iter = gen() console.log(iter[Symbol.iterator]() == iter) // true iter.next() // {value: 1, done: false} iter.next() // {value: 2, done: false} iter.next() // {value: 3, done: false} iter.next() // {value: 100, done: true} , 제너레이터에 return 값이 있을 경우 done이 true가 될 때 그 값을 리턴한다. for(const a of gen()) log(a) /.. 2021. 3. 24.
이터러블/이터레이터 프로토콜 이터러블 이터레이터를 리턴하는 [Symbol.iterator]()를 가지는 값 이터레이터 {value, done} 객체를 리턴하는 next()를 가지는 값 const arr = [1, 2, 3] let iter = arr[Symbol.iterator]() iter.next() // {value: 1, done: false} iter.next() // {value: 2, done: false} iter.next() // {value: 3, done: false} iter.next() // {value: undefined, done: true} 이터러블/이터레이터 프로토콜 이터러블을 for ... of, 전개연산자 등과 함께 동작하도록 한 규약 const arr = [1, 2, 3, 4, 5] for(con.. 2021. 3. 24.
고차함수 고차함수 고차함수란? 크게 보면 함수를 값으로 다루는 함수를 말한다. 세부적으로 보면 아래와 같이 2가지로 나눠볼 수 있다. 함수를 인자로 받아서 실행해 주는 함수 const apply1 = f => f(1) const add2 = a => a + 2 apply1(add2) // 3 apply1(a => a - 1) // 0 // 인자로 넘어온 함수를 n번 실행시키는 함수 const times = (f, n) => { let i = 0 while (i++ console.log(a + 10), 3) // 10 11 12 함수를 만들어 리턴하는 함수 (클로저를 만들어 리턴) const addMaker = a => b => a + b const add10 = addMa.. 2021. 3. 24.