--- title: Expressão function* slug: Web/JavaScript/Reference/Operators/function* translation_of: Web/JavaScript/Reference/Operators/function* ---
A palavra-chave function* pode ser usada para definir uma função generator dentro de uma expressão.
function* [nome]([param1[, param2[, ..., paramN]]]) {
declarações
}
nomeparamNdeclaraçõesUma 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.
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ção | Situação | Comentário |
|---|---|---|
| {{SpecName('ES2015', '#', 'function*')}} | {{Spec2('ES2015')}} | Definição inicial. |
| {{SpecName('ESDraft', '#', 'function*')}} | {{Spec2('ESDraft')}} |
{{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}} |