Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016년 9월.
제너레이터의 return() 메서드는 현재 중단된 위치에서 제너레이터 본체에 리턴 문이 삽입 된 것처럼 작동합니다. 이는 try...finally 블록을 사용하여 제너레이터를 정리 할 수 있도록 합니다.
반환할 값입니다.
두 개의 속성을 가진 객체이고, 이 속성은 다음과 같습니다.
done불리언 값입니다.
인수로 지정된 값이며, 만약 yield 식이 try...finally로 감싸진 경우, 이 값은 finally 블록에서 yield 되거나 반환된 값입니다.
return() 메서드는 현재 중단된 위치의 제너레이터 본체에 삽입된 return value;처럼 보일 수 있습니다. 여기서 value는 return() 메서드에 전달된 값입니다. 따라서 일반적인 흐름에서 return(value)를 호출하면 { done: true, value: value }가 반환됩니다. 그러나 yield 식이 try...finally 블록으로 감싸진 경우, 제어 흐름은 함수를 종료 하지 않고 finally 블록이 실행되도록 합니다. 이 경우 반환되는 값은 다를 수 있으며 finally 블록 내에 더 많은 yield식이 있다면 done도 false일 수 있습니다.
다음 예제에서는 간단한 제너레이터와 return 메서드 사용을 보여줍니다.
제너레이터가 이미 "완료" 상태 일때 return(value)가 호출되면 제너레이터는 "완료" 상태를 유지합니다.
인수를 지정하지 않으면 반환된 객체의 value 속성은 undefined가 됩니다. 인수가 제공되면 yield 식이 try...finally로 감싸지지 않는 한 반환된 객체의 value 속성은 해당 값이 됩니다.
yield 식이 try...finally 블록으로 감싸진 경우에만 return 메소드가 호출되었다는 사실을 제너레이터에게 알릴 수 있습니다.
try...finally 문에서 finally 블록은 항상 실행되기 때문에 try 블록 안 일시 중단된 제너레이터에서 return 메서드가 호출되면 제너레이터의 실행이 finally 블록으로 진행됩니다.
| ECMAScript® 2027 Language Specification # sec-generator.prototype.return |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2023년 8월 8일 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.