Movatterモバイル変換


[0]ホーム

URL:


  1. Tecnologia Web para desenvolvedores
  2. JavaScript
  3. Referência JavaScript
  4. Objetos Globais
  5. Generator

Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.

View in EnglishAlways switch to English

Generator

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨setembro de 2016⁩.

O objetoGenerator é retornado porgenerator function e conformeiterable protocol e oiterator protocol.

Síntaxe

function* gen() {  yield 1;  yield 2;  yield 3;}var g = gen(); // "Generator { }"

Métodos

Generator.prototype.next()

Retorna o valor fornecido pela expressãoyield.

Generator.prototype.return()

Retorna o valor fornecido a finaliza o generator.

Generator.prototype.throw()

Lança um erro no generator.

Example

An infinite iterator

js
function* idMaker() {  var index = 0;  while (true) yield index++;}var gen = idMaker(); // "Generator { }"console.log(gen.next().value); // 0console.log(gen.next().value); // 1console.log(gen.next().value); // 2// ...

Objeto legacy generator

Firefox (SpiderMonkey) também implementa a versão anterior do generator emJavaScript 1.7, onde o asterisco (*) na declaração da função não era necessário (somente era necessário usar a palavra reservadayield no corpo da função). Contudo, legacy generators estão obsoletos. Não os use, eles serão removidos (Erro do Firefox 1083482).

Métodos legacy generator

Generator.prototype.next()Não padrão

Retorna o valor fornecido pela expressãoyield. Isto corresponde aonext() do ES6.

Generator.prototype.close()Não padrão

Fecha o generator, então quando chamarnext() um erroStopIteration será lançado. Isto corresponde ao métodoreturn() do ES6.

Generator.prototype.send()Não padrão

Usado para enviar um valor para o generator. Este valor é retordo pela expressãoyield, e retorna o valor fornecido pelo pelo nextyield.send(x) corresponde aonext(x) do ES6.

Generator.prototype.throw()Não padrão

Lança um erro no generator. Isto corresponde ao métodothrow() do ES6.

Exemplo do Legacy generator

js
function* fibonacci() {  var a = yield 1;  yield a * 2;}var it = fibonacci();console.log(it); // "Generator {  }"console.log(it.next()); // 1console.log(it.send(10)); // 20console.log(it.close()); // undefinedconsole.log(it.next()); // throws StopIteration (Como o generator está fechado)

Especificações

Specification
ECMAScript® 2026 Language Specification
# sec-generator-objects

Compatibilidade com navegadores

Veja Também

Legacy generators

ES6 generators

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp