지연평가 - ChoDragon9/posts GitHub Wiki

_.go(
  _.range(100),
  _.map(val => val * val),
  _.filter(val => val % 2),
  _.take(5),
  console.log
);

엄격한평가 모든 로직을 순서에 맞게 평가하는 것 위 코드로 예를 들면

  1. 배열 100개 생성
  2. map loop 100회
  3. filter loop 100회
  4. take 5개

이와 같은 순서로 동작합니다.

지연평가는 loop가 실행될 때마다 수집하기 -> 거르기 -> 찾아내기 함수를 순차적으로 실행하여 필요한 동작만 하는 것입니다. 위 코드로 예를 들면

  1. 배열 100개 생성
  2. [1] map -> filter -> take => 수집됨
  3. [2] map -> filter => 수집안됨
  4. [3] map -> filter -> take => 수집됨
  5. [4] map -> filter => 수집안됨
  6. ...반복
  7. 5개 수집 완료

이와 같은 순서로 동작합니다.