Ao retornar um objeto de uma função de seta, parece que é necessário usar um conjunto extra de {}
e uma return
palavra - chave devido a uma ambiguidade na gramática.
Isso significa que não posso escrever p => {foo: "bar"}
, mas tenho que escrever p => { return {foo: "bar"}; }
.
Se a função da seta retorna algo diferente de um objeto, o {}
e return
são desnecessários, por exemplo: p => "foo"
.
p => {foo: "bar"}
retorna undefined
.
Um modificado p => {"foo": "bar"}
lança “ SyntaxError
: token inesperado: ' :
'” .
Há algo óbvio que estou perdendo?
fonte
p
como a chave para o objeto literal, este é como fazê-lo:p => ({ [p]: 'bar' })
. Sem o[]
, seráundefined
ou literalmente a letrap
.Você pode se perguntar por que a sintaxe é válida (mas não está funcionando como o esperado):
É por causa da sintaxe do rótulo do JavaScript :
Portanto, se você transpilar o código acima para o ES5, ele deverá se parecer com:
fonte
Se o corpo da função de seta estiver entre chaves, ele não será retornado implicitamente. Coloque o objeto entre parênteses. Seria algo parecido com isto.
Ao envolver o corpo em parênteses, a função retornará
{ foo: 'bar }
.Felizmente, isso resolve seu problema. Caso contrário, recentemente escrevi um artigo sobre as funções do Arrow, que o aborda com mais detalhes. Espero que você ache útil. Funções de seta Javascript
fonte
os caminhos certos
explicar
https://github.com/lydiahallie/javascript-questions/issues/220
https://mariusschulz.com/blog/returning-object-literals-from-arrow-functions-in-javascript
fonte
Questão:
Quando você está fazendo:
O intérprete JavaScript pensa que você está abrindo um bloco de código com várias instruções e, nesse bloco, é necessário mencionar explicitamente uma declaração de retorno.
Solução:
Se sua expressão de função de seta tiver uma única instrução , você poderá usar a seguinte sintaxe:
Mas se você quiser ter várias instruções , poderá usar a seguinte sintaxe:
No exemplo acima, o primeiro conjunto de chaves abre um bloco de código com várias instruções e o segundo conjunto de chaves é para objetos dinâmicos. No bloco de código de múltiplas instruções da função de seta, você deve usar explicitamente instruções de retorno
Para mais detalhes, consulte Mozilla Docs para expressões de função JS Arrow
fonte
Você sempre pode verificar isso para obter mais soluções personalizadas:
fonte