에 돌아 가지 않는 이유는 무엇입니까 초yield
키워드 뒤에 오는 첫 호출 반환 next()
에 가치인가? 제 next()
에서왜 두 번째 수율이 발전기 아래의 코드에서
function* generatorFunction() {
yield (yield 'the second yield')();
}
function func(x) {
return 'func passed to the second next()';
}
var iterator = generatorFunction();
var firstValue = iterator.next().value;
var secondValue = iterator.next(func).value;
console.log(firstValue); // "the second yield"
console.log(secondValue); // "func passed to the second next()"
그것은 바로 표현으로 제 yield
후의 라인의 나머지를 처리? 즉, (yield x)()
은 x로 평가되지만 실제로 평가하는 동안 수율에 멈추지 않습니다.
두 번째 호출에서 next
함수를 전달하면 해당 함수는 (yield 'the second yield')
대신 실행되어 실행되고 그 값을 반환합니다.
아무도 여기에 무슨 일이 일어나는지 설명 할 수 있습니까?
실제적인 용도가 아니기 때문에 나는 es6katas을 살펴볼 것입니다.
@estus와 동의 : 그냥 첫 번째 수익률을 반환하면 첫 번째 수익률을 반환하겠습니까? –
나는 문자 그대로 '첫 번째 수익률에서 멈춤'을 취하고 있었다고 생각한다. (나는 실제로 돌아올 것이 무엇인지에 대해 당혹 스러웠다.) 그래서 그것은 '반환'과 마찬가지로 수율 표현식이 평가되는 순서대로 산출된다. 완벽한 의미로, 고마워. @estus는 그 대답을 자유롭게 복사 할 수 있습니다. –
물론입니다. 저는 '언어 감각'에 호소하는 대신 연산자 우선 순위 설명으로이를 보완했습니다. – estus