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

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

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

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1025閲覧

javascript: return文における{}利用の意図を教えて下さい。

dedede

総合スコア9

JavaScript

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/05/15 19:54

前提・実現したいこと

オンライン学習講座でeventbriteのAPIを使用して、キーワードとジャンルを入力して検索すると関連するイベント一覧が表示されるウェブサイトを作成しました。その際、return文を記述するときに変数を{}で囲うように指示されました。{}を外すとエラーとなります。なぜそうなるのでしょうか?

発生している問題・エラーメッセージ

2箇所のreturn部分を{}を使わずにreturn categories; / return events;と書き換えると変数がundefinedとなってしまいます。

該当のソースコード

javascript//

class EventBrite {
constructor() {
this.auth_token = 'Z5L5BDZ37WYFDZLO5YY2';
this.orderby = 'date';
}

async getCategoriesAPI() {
const categoriesResponse = await fetch(https://www.eventbriteapi.com/v3/categories/?token=${this.auth_token});

const categories = await categoriesResponse.json(); return { categories }

}

async queryAPI(eventName, category) {
const eventResponse = await fetch(https://www.eventbriteapi.com/v3/events/search/?q=${eventName}&sort_by=${this.orderby}&categories=${category}&token=${this.auth_token});

const events = await eventResponse.json(); return { events }

}

}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2019/05/15 21:42

コードはマークダウンのcode機能を利用してご提示ください
miyabi_takatsuk

2019/05/16 01:04

まさか、 return categories というように、returnの後に改行入れたらundefinedになる、とかって話じゃないですよね? エラーが出る元のコードも記載された方がいいかと。
yasutomi

2019/05/16 04:09

コードが汚すぎてまともに読めないです。
guest

回答1

0

ベストアンサー

{ categories } って実は { categories: categories } の意なんですよ。

> const test1 = () => { const foo = 100; return foo } undefined > const test2 = () => { const foo = 100; return { foo } } undefined > test1() 100 > test2() { foo: 100 } > test1().foo undefined > test2().foo 100

getCategoriesAPI() の呼び出し元で result.categories を読む想定のコードで、 return のあとの { } を消すとオブジェクトの階層がずれて undefined になるっていう挙動だと思われます。

投稿2019/05/15 20:23

set0gut1

総合スコア2413

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

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

miyabi_takatsuk

2019/05/16 01:20

な、なんと、{}ブロックスコープで返すと、オブジェクトのプロパティとして返せるんですか。 知らなかった・・・。 ますます奇怪な言語ですな、JS。 しかし、応用、いろいろできそうな仕様ですね。 横槍失礼しました。
miyabi-sun

2019/05/16 01:38

それは流石にES2015の勉強が足りてないのでは… モダンな構文が大量に実装されて表面上は完全に別言語になっているので アップデートしたほうが良いと思います。
miyabi_takatsuk

2019/05/16 01:47 編集

miyabi-sunさん>大変お恥ずかしい限りです。正直IEを言い訳に、モダンな構文はあまり勉強できていませんでした。(様々なプラットホームあるから言い訳にもならない苦笑) 精進します。
dedede

2019/05/20 04:32

完璧に理解できました。ありがとうございました//
miyabi_takatsuk

2019/05/20 05:26

Lhankor_Mhyさん>ありがとうございます。 ES2015〜、今猛勉強中です。 なんとか追いつかねば・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問