inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 자바스크립트(ES6+) 기본

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

408

프린이

작성한 질문수 21

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 표현식의 값이 할당되는 건 아닐텐데,,,

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

 

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

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

 

부탁드립니다!!

제네레이터 yield es6 javascript next()인자넘기기

답변 1

0

김영보

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

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

prototype의 메소드 내부에 화살표 함수가 작성된 경우

1

229

0

let 변수 호이스팅

0

382

1

[정리시간]부족하지만...

3

238

0

자바스크립트도 컴파일을 하나요?

0

626

1

틀린부분 질문드립니다

0

304

1

clear() 메소드 관련 질문

0

250

0

실행 시점

0

162

0

yield에 대해 질문이 있습니다.

0

302

2

window 오브젝트에서의 함수표현식 호출

0

279

1

Unicode 관련 정리

2

226

1

화살표 함수의 this 의 정적 스코프 참조 부분 질문드립니다.

0

205

1

선생님께서 ES5 심화과정에서 알려주신 event 처리 방법 나이스입니다!

1

214

1

안녕하세요.선생님 질문이 생겨서 글남깁니다.

0

201

1

안녕하세요.선생님 질문 있습니다.

1

262

2

Array.from()이랑 Array.of()랑 설명이 뒤바뀐 것 같아요..

0

177

1

Arrow Function 에서 Scope 관련 질문이 있습니다.

1

298

5

setPrototypeOf() 는 정의에 대해 헷갈린 점 질문 드립니다.

5

234

1

[강의자입니다] 브라우저 디버거 창의 오른쪽에 let, const 변수 표시

5

289

0

디버깅 맨 처음부터 Script에 globalLet이 설정되어있습니다.

1

243

1

강의 pdf 파일 공개 부탁드립니다

0

170

1

아 전역에 let을 선언해도 순서대로 읽는군요;;

2

240

1

Symbol.species 질문입니다.

0

420

1

글의 정리가 안되어있어 삭제했습니다.

0

163

1

DevTools > Sources 에서 Block을 볼 수 없어요!

0

277

4