이터러블: 이터레이터를 리턴하는 Symbol.iterator 를 가진 값이터레이터: { value, done } 객체를 리턴하는 next() 를 가진 값이터러블/이터레이터 프로토콜: 이터러블을 for...of, 전개 연산자 등과 함께 동작하도록한 규약
즉시함수의 경우, range 함수를 호출하면 즉시, 배열이 반환된다.그러나 lazy 함수의 경우, 즉시 배열로 평가되는것이 아니라, iterator가 반환되고, 이는 평가함수 ex)for of, ..., rest를 거칠 때 평가된다.
input : range(5) output : 0,1,2,3,4
평가함수
promise는 비동기를 값으로 만드는데 의미가 있다. (1급으로 다룬다.)ex)return을 한다는것이 중요대기, 성공, 실패를 값으로 다룬다. (콜백 방식처럼 그냥 코드로서 다루고 있는것이 아니다.)promise 객체가 반환되면 원하는 시점에 이를 이용해 작업을 할
그냥 reduce비동기 제어를 포함한 reduce1 (acc가 비동기값이 된 후에는 계속 비동기를 처리하는 메소드가 체이닝 될 경우에만 동작 , 불안정하다.)비동기 제어를 포함한 reduce2
일반 reduce의 경우 앞의 지연함수들의 요소 하나하나씩 순차대로 평가한다.C.reduce의 경우 병렬적으로 출발 시킨 뒤 평가한다.C.reduceC.takeC.mapC.filter