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

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

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

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

React.js

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

Q&A

解決済

3回答

19923閲覧

Reactで()と{}の違いはなんですか?

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

React.js

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

1グッド

12クリップ

投稿2018/06/29 03:49

編集2018/06/29 03:54

Reactで(){}の違いがわからないのですが、どういった違いがあるのですか?

例えばですけど下記のコードでreturn()を使っているところもあれば{}を使っているところもあります。

import React from 'react'; import './Color.css'; class Color extends React.Component { constructor(props) { super(props); this.state = { count: 0 }; this.countUp = this.countUp.bind(this); } countUp() { this.setState(prevState => { return { count: prevState.count + 1 }; }); } render() { return ( <li style={{backgroundColor:this.props.color}} onClick={this.countUp}> {this.state.count} </li> ); } } export default Color
kaiyu_fish👍を押しています

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

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

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

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

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

maisumakun

2018/06/29 03:51

「違いがわからない」とのことですが、どのような場面ででしょうか。多くの場合は、どちらかのカッコしか意味をなしません。
退会済みユーザー

退会済みユーザー

2018/06/29 03:54

具体例を追記しました!よろしくお願いします!
guest

回答3

0

ベストアンサー

括弧に関する基礎知識としてはmaisumakunさんの回答の通りなのですが、JavaScriptのreturnと括弧の関係について少し補足しますね。

JavaScript の return で戻り値を指定する場合、戻り値を囲む丸括弧は基本的に不要です。
ただし、return とそれに続く評価式(expression)が複数行になる場合、評価式の一部(1文字以上)が return と同じ行に記述されている必要があります。
つまり・・・

JavaScript

1 2// 戻り値を丸括弧で囲む必要はない 3return 10; 4// 式の一部が同じ行に書かれていれば複数行にしてもOK 5return 1 6 +2+3+4; 7// また当然ですが評価式は丸括弧で囲むことができ、括弧も式の一部です。 8return (10); 9return (1+2+3+4); 10return ( 11 1+2+3+4 12); 13// これはNG(戻り値は undefined になります) 14return 15 10; 16return 17 1+2+3+4; 18return 19 (10); 20return 21 (1+2+3+4); 22

上記を基本として、オブジェクトリテラルや配列を戻す場合、以下のようになります。

JavaScript

1// 戻り値を丸括弧で囲む必要はない 2return {name:"Yamada", age:30}; 3return [1,2,3]; 4// 式の一部が同じ行に書かれていれば複数行にしてもOK 5return { 6 name:"Yamada", 7 age:30 8 }; 9return [ 10 1,2,3 11 ]; 12// また当然ですが評価式は丸括弧で囲むことができ、括弧も式の一部です。 13return ({name:"Yamada", age:30}); 14return ( 15 {name:"Yamada", age:30} 16); 17return ({ 18 name:"Yamada",age:30 19}); 20return ([1,2,3]); 21return ( 22 [1,2,3] 23); 24return ([ 25 1,2,3 26]); 27// これはNG(戻り値は undefined になります) 28return 29 { 30 name:"Yamada", 31 age:30 32 }; 33return 34 ({ 35 name:"Yamada",age:30 36 }); 37return 38 [ 39 1,2,3 40 ]; 41return 42 ([ 43 1,2,3 44 ]);

つまり、countUp() の中の return {...} という構文は、丸括弧を省略してオブジェクトリテラルを戻す表記あり、render() の中の return (...) という構文は、左丸括弧を return に続く評価式の一部として利用した複数行の JSXテンプレート を戻す表記です。
ちなみに以下のように書けば、JSXテンプレートも丸括弧無しで return することができます。

JavaScript

1render() { 2 return <div>hello world!</div>; 3} 4 5render() { 6 return <div> 7 hello world! 8 </div>; 9} 10

ご参考になれば。

投稿2018/06/29 06:01

編集2018/06/29 06:10
tkanda

総合スコア2425

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

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

退会済みユーザー

退会済みユーザー

2018/06/30 04:02

とてもわかりやすく説明して頂きありがとうございます!
guest

0

(){}全く意味が違います。どちらかをどちらかで代用できるものではありません。

()の登場する場面

  • 式のグループ化
  • 関数の引数、仮引数
  • forifなどの条件を囲う

{}の登場する場面

  • 複文(ifforで、制御する文が複数になった場合などに使う)
  • 関数の実行分を囲う
  • オブジェクトリテラル
  • classの中身を囲う
  • `${}`の形で、文字列中の変数展開を行う

returnの後に置けるものはなので、()は「式のグループ化」、{}は「オブジェクトリテラル」が唯一取りうる意味となります。

投稿2018/06/29 04:16

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2018/06/30 04:02

だいたい理解できました! ありがとうございます!
guest

0

return {} はオブジェクトを返しています。
return () の () は特に意味はありません。あってもなくても可です。

例えば提示のコードであれば以下のように書けます。

countUp() { this.setState(prevState => { return ({ count: prevState.count + 1 }); }); }
render() { return <li style={{backgroundColor:this.props.color}} onClick={this.countUp} > {this.state.count} </li>; }

React においては複数行の JSX を返すときに () 使わないと上の例のようにダサくなるので () で囲ったほうがいいよねって風習があります。

投稿2018/06/29 09:52

og24715

総合スコア832

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

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

退会済みユーザー

退会済みユーザー

2018/06/30 04:03

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問