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

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

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

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

Q&A

解決済

3回答

1590閲覧

JavaScriptにおける"return{};" という表現の文法的な意味を教えてください

echizeyayota

総合スコア104

JavaScript

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

0グッド

0クリップ

投稿2019/06/24 01:12

いつもお世話になっています。
下記の質問についてご存知の方がいらっしゃいましたらご教示を願います。


【質問の主旨】

GitHubで公開したJavaScriptのコードには、return{}; という記述があります。このreturn{};の文法的な意味を教えてください

【質問の補足】

1.

returnについてMDNで確認しても、return{};に関する用例を見つけられません。

2.

return{};return();に変えて実行してみると、コンソール画面上にUncaught SyntaxError: Unexpected token {が表示されます。個人的にはreturn();という表現でも差し支えないと思いますが、なぜ文法エラーを指摘されるのかよく分かりません。

3.

今回の質問は「JavaScript逆引きレシピ 第2版」のP249より引用しています。


以上、ご確認のほどよろしくお願い申し上げます。

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

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

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

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

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

m.ts10806

2019/06/24 01:36

>GitHubで公開した 自身のコードなのですか?
m.ts10806

2019/06/24 01:42

>return{};をreturn();に変えて実行してみると ここはもう少し丁寧に書かれたほうが良いかと思います。 そもそもが外部リンクのコードなので質問だけ読むとreturn()という関数を呼び出している・・・と捉えられなくもないです。
echizeyayota

2019/06/24 01:49

>ここはもう少し丁寧に書かれたほうが良いかと思います。 ご指摘ありがとうございます。以降、同じように変化をつけたコードを紹介する場合、質問投稿文の中に必要な箇所を直接記述するようにします。
m.ts10806

2019/06/24 02:04

はい。質問は編集もできますので、なるべく質問本文に反映してもらえたらと思います。 ※今回は既に解決してしまっているので余程のことがない限りは次回以降で結構です
echizeyayota

2019/06/24 02:41

たびたびのアドバイスありがとうございます。今後ともどうぞよろしくお願いします。
guest

回答3

0

空のオブジェクト「{}」をリターンしてるだけでは?

投稿2019/06/24 01:22

編集2019/06/24 01:23
yambejp

総合スコア114581

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

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

echizeyayota

2019/06/24 01:33

yambejpさん。コメンとありがとうございます。オブジェクトリテラルの中身である、next()メソッドはオブジェクトとは関係がないということでしょうか?
guest

0

ベストアンサー

returnの後に書けるものはです。return { ... }とした場合、{ ... }全体がオブジェクトリテラルとなっていて、それを返します。

投稿2019/06/24 01:20

maisumakun

総合スコア145121

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

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

echizeyayota

2019/06/24 01:32

maisumakunさん。コメントありがとうございます。今回、GitHubに公開したコードの場合、next()メソッド自体がオブジェクトリテラルの値であるということでしょうか?
maisumakun

2019/06/24 01:33

> next()メソッド自体がオブジェクトリテラルの値であるということでしょうか? いえ、ここでreturnしている値は「next()メソッド1つを含むオブジェクト」であって、メソッドそのものではありません。
echizeyayota

2019/06/24 01:35

たびたびのコメントありがとうございます。 >ここでreturnしている値は「next()メソッド1つを含むオブジェクト」であって 了解です!質問に対する回答が分かりました。今後ともどうぞよろしくお願いします。
guest

0

なぜ文法エラーを指摘されるのかよく分かりません。

returnにつづくのは式ですから、(はグループ化演算子と解釈されます。
グループ化演算子 - JavaScript | MDN
なので、nextは変数(識別子)として解釈され、next()は関数呼び出しとして解釈されます。
そのあとにつづく{は、たとえば、alert(){}のように解釈されている、ということです。
これは文法として誤っていますから、エラーになります。

投稿2019/06/24 01:51

Lhankor_Mhy

総合スコア35869

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

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

echizeyayota

2019/06/24 02:44

Lhankor_Mhyさん。 コメントありがとうございます。アドバイス参考にさせていただきます。今後ともどうぞよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問