함수형 프로그래밍에서는 함수가 인자와 return값으로만 소통하는 것을 권장

함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의

고차 함수

고차 함수는 2가지로 나눌 수 있다.

  1. 함수를 인자로 받아서 실행하는 함수
  2. 함수를 만들어 리턴하는 함수(클로저)

이터레이터(Iterator)

리스트 순회

기존 for문() 순회말고 for of 문 : 보다 선언적

기존에 사용하던대로 index로 접근할 수 있는 것이 아니라 Symbol(Symbol.iterator)(ES6 추가)를 통해 순회 Symbol은 어떤 객체의 key로 사용될 수 있음

만약 객체 내 Symbol.iterator 프로퍼티를 없애면 순회불가해진다. (TypeError : not iterable)

Iterable/Iterator

Iterable: [Symbol.iterator]()(: Iterator를 return) 메서드를 가진

Iterator : next()(: {value, done} 객체를 return)를 가진

Iterable/Iterator protocol : Iterable을 for … of, spread 등과 함께 동작하도록 한 규약

Set, Map 등은 Iterable protocol을 따르고 있기 때문에 for … of 순회가 가능. 숫자 index로 접근하는게 아님

Map.values() : MapIterator { } (얘도 다시 Symbol.iterator를 갖고 있음)

사용자 정의 Iterable