--- title: yield slug: Web/JavaScript/Reference/Operators/yield translation_of: Web/JavaScript/Reference/Operators/yield original_slug: Web/JavaScript/Referencia/Operadors/yield ---
{{jsSidebar("Operators")}}

Resum

La paraula clau yield s'utilitza per a pausar i reprendre una funció generadora ({{jsxref("Statements/function*", "function*")}} o bé una funció generadora obsoleta).

Sintaxi

 yield [[expressió]];
expressió
La expresssió a retornar. Si s'omet es retorna undefined.

Descripció

La paraula clau yield causa que l'execució d'una funció generadora es pausi i retorni el valor de l'expressió que la segueix. La paraula clau yield es pot entendre com una versió de la paraula clau return per a generadors.

La paraula clau yield retorna en realitat un objecte de tipus IteratorResult amb dues propietats: value i done. La propietat value és el resultat d'evaluar l'expresssió que segueix yield mentre que la propietat done és de tipus booleà i indica si la funció generadora ha completat la seva execució o no.

Un cop pausada mitjançant una expressió yield, l'execució de codi del generador no es reprendrà a no ser que s'invoqui externament mitjançant la crida a la funció next() del generador. Això permet un control directe de l'execució del generador i valors de retorn incrementals.

Exemples

El següent codi és un exemple de la declaració d'una funció generadora al llarg d'una funció d'ajut.

function* foo(){
  var index = 0;
  while (index <= 2) // quan index arriba a 3,
                     // la propietat done del yield serà true
                     // i el seu valor serà undefined;
    yield index++;
}

Un cop la funció generadora és definida es pot utilitzar tot construïnt un iterador tal i com es mostra a continuació:

var iterator = foo();
console.log(iterator.next()); // { value:0, done:false }
console.log(iterator.next()); // { value:1, done:false }
console.log(iterator.next()); // { value:2, done:false }
console.log(iterator.next()); // { value:undefined, done:true }

Especificacions

Especificació Estat Comentaris
{{SpecName('ES6', '#', 'Yield')}} {{Spec2('ES6')}} Definició inicial

Compatibilitat amb navegadors

{{CompatibilityTable}}

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Suport bàsic 39 {{CompatGeckoDesktop("26.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Objecte IteratorResult en comptes de throwing {{CompatUnknown}} {{CompatGeckoDesktop("29.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Característica Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suport bàsic yes (when?) {{CompatGeckoMobile("26.0")}} {{CompatUnknown}} {{ CompatUnknown}} {{CompatUnknown}}
Objecte IteratorResult en comptes de throwing {{CompatUnknown}} {{CompatGeckoMobile("29.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

Notes específiques per a Firefox

Vegeu tambè