함수형 프로그래밍에서는 함수가 인자와 return값으로만 소통하는 것을 권장
함수형 프로그래밍과 JavaScript ES6+ - 인프런 | 강의
고차 함수는 2가지로 나눌 수 있다.
기존 for문() 순회말고 for of
문 : 보다 선언적
기존에 사용하던대로 index로 접근할 수 있는 것이 아니라 Symbol(Symbol.iterator)
(ES6 추가)를 통해 순회 Symbol은 어떤 객체의 key로 사용될 수 있음
만약 객체 내 Symbol.iterator 프로퍼티를 없애면 순회불가해진다. (TypeError : not iterable)
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를 갖고 있음)