web-dev-qa-db-fra.com

Comment retourner un objet anonyme à partir d'une fonction de flèche de ligne en Javascript?

Je suis récemment passé à es6 et j'ai commencé à utiliser les fonctions fléchées partout dans mon code. Lors de la refactorisation, je suis tombé sur le code ci-dessous

data.map(function(d) {
   return {id: d.id, selected: bool};
});

J'ai changé le code ci-dessus en ceci -

data.map((d) => {id: d.id, selected: bool});

Mais je recevais une erreur du code ci-dessus. Je ne sais pas ce qui ne va pas ici? Je sais que s'il n'y a pas de bloc de code, il y a un retour implicite fourni par la fonction flèche.

Mais je ne sais pas comment retourner un objet vide ou un objet anonyme avec certaines propriétés initialisées?

Modifier:

Qu'est-ce qui ne va pas si je le fais de cette façon? Juste pour la curiosité.

data.map((d) => new {id: d.id, selected: bool});
33
WitVault

Mettez des parens autour de l'initialiseur d'objet:

data.map((d) => ({id: d.id, selected: bool}) );

Les parenthèses n'ont aucun effet sur la valeur de l'expression qu'elles contiennent, mais elles do ont pour effet syntaxique d'éliminer l'ambiguïté du premier jeton de l'expression contenue. Sans les parenthèses, l'analyseur JavaScript doit décider si le { token signifie "Ici commence un corps de fonction" ou "Ici démarre un initialiseur d'objet." Il toujours choisit le premier (c'est-à-dire un bloc de code).

L'introduction des parenthèses élimine donc la confusion: la seule chose qu'un _ ( peut signifier que "voici une expression", de sorte que {inside les parenthèses ne peuvent être que "voici un initialiseur d'objet". (Vous ne pouvez pas déposer un bloc de code au milieu d'une expression, en d'autres termes; si vous essayez, vous obtiendrez une erreur de syntaxe.)

67
Pointy

Salut, je pense que vous devez ajouter des parenthèses pour renvoyer un objet littéral

// Entre parenthèses le corps pour renvoyer une expression littérale d'objet: params => ({foo: bar})

de https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

1
saurabh vyas