[JavaScript ES 6+]サードパーティおよびアプレット
15536 ワード
1.発電機
サードパーティ:イテレーションとイテレーションを作成する関数、*表示<script>
function *gen() {
yield 1;
if (false) yield 2;
yield 3;
}
let iter = gen();
log(iter[Symbol.iterator]() == iter);
log(iter.next());
log(iter.next());
log(iter.next());
log(iter.next());
for (const a of gen()) log(a);
</script>
実行結果はイテレーションでありイテレーションであるため、このように巡回することができます.for (const a of gen());
❗文を使用してループ可能な値を作成できます。これは、任意の値をループ可能に操作したり、さまざまな値をループ可能なウィジェットを作成したりできることを意味します。
2. odds <script>
function *odds(l) { //홀수만 생성
for (let i = 0; i < 1; i++) {
if (i % 2) yield i;
}
}
let iter2 = odds(10); //10까지의 홀수를 뽑는 제너레이터
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
</script>
<script>
function *infinity(i = 0) { //이터레이터는 next를 할 때마다 생성되니까 무한히 값을 생성
while (true) yield i++;
}
function *limit(l, iter) {
for (const a of iter) {
yield a;
if (a == l) return;
}
}
function *odds(l) { //홀수만 생성
for (const a of limit(l, infinity(1))) {
if (a % 2) yield a;
}
}
for (const a of odds(20)) log(a);
3. for...of,展開演算子,構造配分,残余演算子 <script>
//전개 연산자
log(...odds(10));
log([...odds(10), ...odds(20)]);
//구조 분해
const [head, ...tail] = odds(5);
log(head);
log(tail);
const [a, b, ...rest] = odds(10);
log(a);
log(b);
log(rest);
</script>
Reference
この問題について([JavaScript ES 6+]サードパーティおよびアプレット), 我々は、より多くの情報をここで見つけました
https://velog.io/@imyourgenie/JavaScript-ES6-제너레이터와-이터레이터
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
<script>
function *gen() {
yield 1;
if (false) yield 2;
yield 3;
}
let iter = gen();
log(iter[Symbol.iterator]() == iter);
log(iter.next());
log(iter.next());
log(iter.next());
log(iter.next());
for (const a of gen()) log(a);
</script>
for (const a of gen());
<script>
function *odds(l) { //홀수만 생성
for (let i = 0; i < 1; i++) {
if (i % 2) yield i;
}
}
let iter2 = odds(10); //10까지의 홀수를 뽑는 제너레이터
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
log(iter2.next());
</script>
<script>
function *infinity(i = 0) { //이터레이터는 next를 할 때마다 생성되니까 무한히 값을 생성
while (true) yield i++;
}
function *limit(l, iter) {
for (const a of iter) {
yield a;
if (a == l) return;
}
}
function *odds(l) { //홀수만 생성
for (const a of limit(l, infinity(1))) {
if (a % 2) yield a;
}
}
for (const a of odds(20)) log(a);
3. for...of,展開演算子,構造配分,残余演算子 <script>
//전개 연산자
log(...odds(10));
log([...odds(10), ...odds(20)]);
//구조 분해
const [head, ...tail] = odds(5);
log(head);
log(tail);
const [a, b, ...rest] = odds(10);
log(a);
log(b);
log(rest);
</script>
Reference
この問題について([JavaScript ES 6+]サードパーティおよびアプレット), 我々は、より多くの情報をここで見つけました
https://velog.io/@imyourgenie/JavaScript-ES6-제너레이터와-이터레이터
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
<script>
//전개 연산자
log(...odds(10));
log([...odds(10), ...odds(20)]);
//구조 분해
const [head, ...tail] = odds(5);
log(head);
log(tail);
const [a, b, ...rest] = odds(10);
log(a);
log(b);
log(rest);
</script>
Reference
この問題について([JavaScript ES 6+]サードパーティおよびアプレット), 我々は、より多くの情報をここで見つけました https://velog.io/@imyourgenie/JavaScript-ES6-제너레이터와-이터레이터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol