質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

2回答

341閲覧

Reactにおける波括弧の省略に関して

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2024/01/22 05:25

編集2024/01/22 05:26

以下のコードにおいて、アロー以降の波括弧の有無でエラーが出るのですが、なぜ当該波括弧を省略する必要があるのでしょうか?

アロー関数の宣言方法として、処理部分が複数行になる場合は波括弧を使用するものと認識しているのですが、Reactでは別の記法が使用されるということでしょうか。

なお2つ目のsetTodosで発生するエラーはExpected an assignment or function call and instead saw an expressionです。

App.js

1// エラーなし 2setTodos((prevTodos) => 3 prevTodos.map((todo) => 4 todo.id === id ? { ...todo, completed: !todo.completed } : todo 5 ) 6); 7 8// エラーがでる 9setTodos((prevTodos) => { 10 prevTodos.map((todo) => { 11 todo.id === id ? { ...todo, completed: !todo.completed } : todo; 12 }); 13});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

エラー自体は以下のようにreturnを記入することで解決した。
なお肝心の「なぜ波括弧を省けるのか」については、行数以前にアロー関数がであるため、内部処理が複数行になっても単一式として見做されるということであった。

App.js

1setTodos((prevTodos) => { 2 return prevTodos.map((todo) => { 3 return todo.id === id ? { ...todo, completed: !todo.completed } : todo; 4 }); 5});

投稿2024/01/22 06:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

return文がないからでは?

簡潔文体においては、単一の式しか記述できないので、その式が暗黙的に return される値となります。しかし、ブロック文体においては、明示的に return 文を使用する必要があります。
アロー関数式 - JavaScript | MDN

投稿2024/01/22 05:35

編集2024/01/22 05:36
Lhankor_Mhy

総合スコア37362

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2024/01/22 05:45

ありがとうございます。 波括弧の中で return を入れるとエラーがなくなりました。 ただ簡潔文体は単一の式しか使えないにも関わらず、mapで複数行になっても動作するというのが個人的に不可解なのですが、その点は式ではなく文だからOKということなのでしょうか?
Lhankor_Mhy

2024/01/22 05:50

『簡潔文体』の場合には後に続くのは式、『ブロック文体』の場合には後に続くのはブロック、ということです。アロー関数式を含むmap関数が改行され複数行にわたって書かれているということは、直接関係のない話です。
退会済みユーザー

退会済みユーザー

2024/01/22 05:56

なるほど!理解しました。 式は内部処理が何行になろうとも単一の式であることに変わりはないので、扱う対象が単一式であれば行数は関係なしということですね。 大変参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問