Generator.prototype.return()
Baseline
Widely available
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 ë¸ë¡ì ì¬ì©íì¬ ì ëë ì´í°ë¥¼ ì 리 í ì ìëë¡ í©ëë¤.
구문
generatorObject.return(value);
매ê°ë³ì
value-
ë°íí ê°ì ëë¤.
ë°í ê°
ë ê°ì ìì±ì ê°ì§ ê°ì²´ì´ê³ , ì´ ìì±ì ë¤ìê³¼ ê°ìµëë¤.
done-
ë¶ë¦¬ì¸ ê°ì ëë¤.
- ì ëë ì´í° í¨ìì ì ì´ íë¦ì´ ëì ëë¬í ê²½ì°
trueì ëë¤. - ì ëë ì´í° í¨ìì ì ì´ íë¦ì´ ëì ëë¬íì§ ìê³ ë ë§ì ê°ì ìì±í ì ìë ê²½ì°
falseì ëë¤. ì´ëreturnì´try...finallyìì ì¤íëìê³finallyë¸ë¡ìë ë ë§ìyieldìì´ ììëë§ ë°ìí ì ììµëë¤.
- ì ëë ì´í° í¨ìì ì ì´ íë¦ì´ ëì ëë¬í ê²½ì°
value-
ì¸ìë¡ ì§ì ë ê°ì´ë©°, ë§ì½
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 ë©ìë ì¬ì©ì ë³´ì¬ì¤ëë¤.
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen();
g.next(); // { value: 1, done: false }
g.return("foo"); // { value: "foo", done: true }
g.next(); // { value: undefined, done: true }
ì ëë ì´í°ê° ì´ë¯¸ "ìë£" ìí ì¼ë return(value)ê° í¸ì¶ëë©´ ì ëë ì´í°ë "ìë£" ìí를 ì ì§í©ëë¤.
ì¸ì를 ì§ì íì§ ìì¼ë©´ ë°íë ê°ì²´ì value ìì±ì undefinedê° ë©ëë¤. ì¸ìê° ì ê³µëë©´ yield ìì´ try...finallyë¡ ê°ì¸ì§ì§ ìë í ë°íë ê°ì²´ì value ìì±ì í´ë¹ ê°ì´ ë©ëë¤.
function* gen() {
yield 1;
yield 2;
yield 3;
}
const g = gen();
g.next(); // { value: 1, done: false }
g.next(); // { value: 2, done: false }
g.next(); // { value: 3, done: false }
g.next(); // { value: undefined, done: true }
g.return(); // { value: undefined, done: true }
g.return(1); // { value: 1, done: true }
try...finallyì í¨ê» return() ì¬ì©í기
yield ìì´ try...finally ë¸ë¡ì¼ë¡ ê°ì¸ì§ ê²½ì°ìë§ return ë©ìëê° í¸ì¶ëìë¤ë ì¬ì¤ì ì ëë ì´í°ìê² ì릴 ì ììµëë¤.
try...finally 문ìì finally ë¸ë¡ì íì ì¤íë기 ë문ì try ë¸ë¡ ì ì¼ì ì¤ë¨ë ì ëë ì´í°ìì return ë©ìëê° í¸ì¶ëë©´ ì ëë ì´í°ì ì¤íì´ finally ë¸ë¡ì¼ë¡ ì§íë©ëë¤.
function* gen() {
yield 1;
try {
yield 2;
yield 3;
} finally {
yield "cleanup";
}
}
const g1 = gen();
g1.next(); // { value: 1, done: false }
// try...finally ì ì ì¤íì´ ì¼ì ì¤ë¨ë©ëë¤.
g1.return("early return"); // { value: 'early return', done: true }
const g2 = gen();
g2.next(); // { value: 1, done: false }
g2.next(); // { value: 2, done: false }
// try...finally ë´ìì ì¤íì´ ì¼ì ì¤ë¨ë©ëë¤.
g2.return("early return"); // { value: 'cleanup', done: false }
// ìë£ ê°ì ì ì§ë©ëë¤.
g2.next(); // { value: 'early return', done: true }
// ì ëë ì´í°ê° ìë£ë ìíì
ëë¤.
g2.return("not so early return"); // { value: 'not so early return', done: true }
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-generator.prototype.return > |