• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

[제네레이터함수, yield를 활용한 무한 덧셈] 식, result += yield result를 어떻게 이해 해야할까요???

21.12.27 22:59 작성 조회수 259

0

위 식에서 result의 값을 result로 할당(+=)하는 듯?한 식을 어떤 논리로 이해해야할지 난감합니다.

 

예를 들어,

비슷한 구조로,

const result = yield one + two

console.log(result)

라는 식이 있을때,

 

1번째 next() 일 경우

=> one + two의 값이 반환됨

2번째 next() 일 경우이면서 인자가 들어간 next로 호출될때 (예: next(20))

=> next의 인자, 20이 result에 할당되어, result는 20의 값을 가짐

=>console.log(result) // 20

이라고 이해하고 있습니다.

 

즉.  one + two의 값이 result에 할당되는 것 같지만, 

그렇지 않고, 

분리가 되어,

호출되는 next의 인자값이 할당되는 것으로 이해하고 있습니다.

 

만약 간단하게,

yield result++ 일 경우라면, 

증감된(++) result가 반환되는거로 이해하면 되는데요,

 

반면

result +=yield result;은

위의 식 처럼이라면, yield 의 표현식인 (우측의) result가 반환 될 것같은데,

그게 아니라 이전 result에 이후 result가 더해진 새로운 result(result+=result)가 출력이 됩니다.

 

(제가 알고 있는 지식으로)

1.yield 우측의 표현식의 반환값은 좌측의 변수로 할당되지 않고

2.그 이후에 호출되는 next()메서드에 인자로 넣은 값을 갖는 거라고 알고 있는데요

 

해당 소스를 크롬 디버거로 돌리면,

result의 값이 next메서드에 인자(10,20,30,40)로 들어간 값이 누적해서 더해지고 있습니다.

 

제네레이터 함수는 이전 값을 기억하고 있어 이후의 값과 연산이 가능한 건 알겠는데,

yield 표현식의 값이 할당되는 건 아닐텐데,,,

'할당' 되는 모습"인거 같아 "너무 혼란스럽습니다...ㅠ

 

위의 식을 어떤 논리로, 흐름으로 이해하면 좋을까요??..

위 식을 강의 진행해주신 것처럼 풀어 설명 해주실 수 있을까요?

 

부탁드립니다!!

답변 1

답변을 작성해보세요.

0

90% 이상 논리가 정리되었으며, 나머지 10%를 정리하면 되겠습니다. 아래 문장에 해답이 있습니다. 강의와 비교하면서 다시 정리하시면 되겠습니다. 제가 설명할 수도 있지만, 질문에 작성된 방법처럼 자신이 찾아 나가는 것이 매우 중요하기 때문입니다. 이러는 과정을 통해 기본이 튼튼하게 만들어 집니다.

1.yield 우측의 표현식의 반환값은 좌측의 변수로 할당되지 않고
2.그 이후에 호출되는 next()메서드에 인자로 넣은 값을 갖는 거라고 알고 있는데요