Files
2nd/10_Wiki/Topic_JavaScript/JavaScript_Generators.md
T
koriweb 9609c04755 docs(10_Wiki): W3Schools 위키화 — HTML/CSS/JavaScript(core)
W3Schools 튜토리얼을 P-Reinforce v3.1 포맷으로 위키화(영어 본문, 한/영 섹션 헤더).
- Topic_HTML: 59문서 (튜토리얼+예제, 레퍼런스/메타 제외)
- Topic_CSS: 190문서 (메인 + Advanced/Flexbox/Grid/RWD 전체)
- Topic_JavaScript: 120문서 (코어 언어; Temporal/DOM상세/BOM/WebAPI/AJAX/jQuery/Graphics 등은 후속)
각 폴더 00_INDEX.md(MOC) 포함. 코드 verbatim, 미확인분은 "Not found in source" 표기.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 19:21:18 +09:00

5.1 KiB

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
javascript-generators JavaScript Generators Frontend draft conceptual
JS generators
function*
yield
generator object
generator function
B 0.87 2026-06-23 2026-06-23
javascript
js
web
frontend
w3schools
generators
yield
iterators
https://www.w3schools.com/js/js_generators.asp

JavaScript Generators

🎯 한 줄 통찰 (One-line insight)

A JavaScript generator, declared with function*, can return multiple values one by one and can be paused and resumed using the yield keyword, returning a Generator Object that follows both the iterable and iterator protocols. [S1]

🧠 핵심 개념 (Core concepts)

  • function* defines a generator — generator functions use the function* syntax and, when invoked, return a Generator Object rather than a single value. [S1]
  • Returns multiple values, one by one — a generator can return (yield) a stream of multiple values, one at a time. [S1]
  • Pausable and resumable — generators can be paused and resumed; the yield keyword pauses execution and yields a value back to the caller while preserving internal state. [S1]
  • Both iterable and iterator — Generator Objects follow both the iterable and iterator protocols, so they work with for...of loops. [S1]
  • next() shape — calling next() returns an object of the form {value: value, done: true|false}. [S1]

🧩 추출된 패턴 (Extracted patterns)

  • Yield a sequence — use multiple yield statements inside a function* to emit values one at a time on each next() call. [S1]
  • yield vs returnyield produces a value and pauses; return ends the generator. [S1]
  • Consume with for...of — because a generator is iterable, you can loop over its yielded values directly. [S1]

📖 세부 내용 (Details)

JavaScript Generators Generators are functions that can return multiple values, one by one. A JavaScript Generator can yield a stream of data. Generators can be paused and resumed. [S1]

Generator Functions Generator functions are defined with the function* syntax. When called, a generator function does not run its body immediately — instead it returns a Generator Object structured as {value:1, done:false}. [S1]

Example — a generator with yield and return [S1]

function* myStream() {
  yield 1;
  yield 2;
  return 3;
}

let myGenerator = myStream();

for (let value of myGenerator) { }

The yield Keyword The yield keyword pauses execution and yields a value back to the caller. Generators maintain their internal state between yield calls, enabling resumption from the previous stopping point. [S1]

Generator Object Methods [S1]

Method Description
next() Resumes execution of the generator function
return() Finishes execution and returns the given value
throw() Throws an exception in execution

The next() method resumes execution of the generator function and returns { value: value, done: true|false}. [S1]

Use Cases Generators simplify creating custom iterators for complex data structures, enable efficient on-demand value generation including potentially infinite data streams, and historically were used to manage asynchronous operations before async/await became standard. [S1]

🛠️ 적용 사례 (Applied in summary)

The page's myStream generator (two yields and a return, consumed via for...of) is the canonical applied example. No external project/commit applications found in the source.

💻 코드 패턴 (Code patterns)

Define and consume a generator (language: JavaScript):

function* myStream() {
  yield 1;
  yield 2;
  return 3;
}

let myGenerator = myStream();

for (let value of myGenerator) { }

⚖️ 모순 및 업데이트 (Contradictions & updates)

The page notes that generators were historically used to manage asynchronous operations before async/await became the standard approach. [S1]

검증 상태 및 신뢰도

  • 상태: draft
  • 검증 단계: conceptual (실제 적용 사례 발견 시 applied/validated로 승격 가능)
  • 출처 신뢰도: B (W3Schools — widely used educational reference, not a primary standards body)
  • 신뢰 점수: 0.87
  • 중복 검사 결과: 신규 생성 (New discovery)

🔗 지식 그래프 (Knowledge Graph)

📚 출처 (Sources)

📝 변경 이력 (Change history)

  • 2026-06-23: Initial draft synthesized from the W3Schools "JavaScript Generators" page (Astra wiki-curation, P-Reinforce v3.1 format).