1. ホーム
  2. javascript

javascriptで1つのライナー矢印関数から匿名のオブジェクトを返すにはどうすればよいですか?[重複している]をクリックします。

2023-09-21 16:03:44

質問

最近、es6に移行し、私のコードの至る所で矢印関数を使用するようになりました。 リファクタリング中に、以下のコードに出会いました。

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

上記のコードを次のように変更しました。

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

しかし、私は上記のコードからエラーが発生しました。私はここで何が間違っているのか分からないのですか? 私はコードのブロックがない場合、矢印関数によって提供される暗黙の戻り値があることを知っています。

しかし、いくつかのプロパティを初期化した空のオブジェクトまたは匿名オブジェクトを返す方法がわからないのですか?

編集してください。

このようにすると、何か問題があるのでしょうか?興味本位で教えてください。

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

どのように解決するのですか?

オブジェクトのイニシャライザーを括弧で囲む。

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

括弧はその中の式の値には影響しませんが、括弧の中の する は、含まれる式の最初のトークンの曖昧さを排除するという構文上の効果があります。括弧がない場合、JavaScript パーサーは { トークンが意味するのは、「関数本体の開始」なのか「オブジェクトのイニシャライザーの開始」なのかです。 は常に は前者(つまり、コードのブロック)を選択します。

したがって、括弧を導入することで混乱が解消されます。 ( が意味するのは、"ここに式が来る" だけです。 { の中 は、quot;here comes an object initializer."としか書けません(式の途中でコードのブロックを落とすことはできません。つまり、落とそうとすると構文エラーになります。)。