--- title: Expressão function* slug: Web/JavaScript/Reference/Operators/function* translation_of: Web/JavaScript/Reference/Operators/function* ---
{{jsSidebar("Operators")}}

A palavra-chave function* pode ser usada para definir uma função generator dentro de uma expressão.

Sintaxe

function* [nome]([param1[, param2[, ..., paramN]]]) {
    declarações
}
nome
O nome da função. Pode ser omitido, no caso da função ser anônima. O nome é local apenas para o corpo da função.
paramN
O nome de um argumento para ser passado para a função. Uma função pode ter até 255 argumentos.
declarações
As declarações que compõem o corpo da função.

Descrição

Uma expressão function* é muito similar e tem quase a mesma sintaxe que a {{jsxref('Statements/function*', 'declaração function*')}}. A principal diferença entre uma expressão  function* e a declaração function* é o nome da função, que pode ser omitido em expressões function* para criar funções anônimas. Veja também o capítulo sobre funções para mais informações.

Exemplos

O exemplo a seguir define uma função generator e atribui à variável x. A função faz um yield do quadrado do seu argumento:

var x = function*(y) {
   yield y * y;
};

Especificações

Especificação Situação Comentário
{{SpecName('ES2015', '#', 'function*')}} {{Spec2('ES2015')}} Definição inicial.
{{SpecName('ESDraft', '#', 'function*')}} {{Spec2('ESDraft')}}  

Compatibilidade com navegadores

{{CompatibilityTable}}

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("26.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatSafari("10")}}
yield* {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop("27.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatSafari("10")}}
Trailing comma in parameters {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop("52.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile("26.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatSafari("10")}}
yield* {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("27.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatSafari("10")}}
Trailing comma in parameters {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("52.0")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

Veja também