Files
2nd/10_Wiki/Topic_Programming/Topic_JavaScript/JavaScript_Generators.md
T
Antigravity Agent e9cbf23ab5 docs(10_Wiki): Dev 폴더 누락분 반영 — Topic_Programming으로 통합
이전 재구성 작업에서 Dev/ 폴더가 누락되었던 것을 반영.

- Dev/Topic_Programming(중첩 폴더, 78개)은 Dev 자체 최상위 폴더들
  (Architecture/Conventions/Engineering_Intelligence 등)과 완전 중복이라 제거.
- Dev 최상위 엔지니어링 지식 폴더(Architecture/Conventions/Engineering_Intelligence/
  Failure_Library/Generalized_Principles/Language/Pattern_Catalog/Platform_Guides/
  Subsystems, 77개)는 이미 Topic_Programming/Topic_Programming에 더 최신 버전이
  존재해 중복 제거(고유 콘텐츠 1개는 예외 처리하여 이동 보존).
- Dev의 W3Schools 언어 튜토리얼 폴더(Topic_C/CPP/CSS/CSharp/HOWTO/HTML/Java/
  JavaScript/PHP/Python/SQL/W3CSS, 1201개)는 전부 Topic_Programming 하위로 이동.
- 에이전트 운영 상태(.astra/docs)는 그대로 유지, 콘텐츠 폴더만 정리.
- Topic_Programming 최종 문서 수: 2784 → 3985.
2026-07-05 00:39:13 +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).