function* 表达å¼
åºçº¿
广æ³å¯ç¨
èª 2016å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
function* å
³é®åå¯ä»¥å¨è¡¨è¾¾å¼å
é¨å®ä¹ä¸ä¸ªçæå¨å½æ°ã
å°è¯ä¸ä¸
const foo = function* () {
yield "a";
yield "b";
yield "c";
};
let str = "";
for (const val of foo()) {
str = str + val;
}
console.log(str);
// Expected output: "abc"
è¯æ³
function* [name]([param1[, param2[, ..., paramN]]]) {
statements
}
åæ°
name-
彿°åãå¨å£°æå¿å彿°æ¶å¯ä»¥çç¥ã彿°åç§°åªæ¯å½æ°ä½ä¸çä¸ä¸ªæ¬å°åéã
paramN-
ä¼ å ¥å½æ°çä¸ä¸ªåæ°åãä¸ä¸ªå½æ°æå¤æ 255 ä¸ªåæ°ã
statements-
彿°ä½ã
æè¿°
function*表达å¼åfunction* å£°ææ¯è¾ç¸ä¼¼ï¼å¹¶å
·æå ä¹ç¸åçè¯æ³ãfunction*表达å¼åfunction*声æä¹é´ä¸»è¦åºå«å°±æ¯å½æ°åï¼å³å¨å建å¿å彿°æ¶ï¼function*表达å¼å¯ä»¥çç¥å½æ°åãé
è¯»å½æ°ç« èäºè§£æ´å¤ä¿¡æ¯ã
示ä¾
ä¸é¢ç示ä¾å®ä¹äºä¸ä¸ªæªå½åççæå¨å½æ°å¹¶æå®èµå¼ç»xã彿°äº§åºå®çä¼ å
¥åæ°çå¹³æ¹ï¼
var x = function* (y) {
yield y * y;
};
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-generator-function-definitions> |