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

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

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

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

Q&A

0回答

627閲覧

電車ナビプログラム内の関数について

tooju

総合スコア15

JavaScript

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

0グッド

0クリップ

投稿2020/09/23 17:32

編集2020/10/02 14:37

現在javascript勉強中のものです。

以下の電車ナビのコードについて質問です。

// 行き先の駅に停まる電車の種類を表示する処理 function displayTrainType() { var station = inputStation(); var type = getTrainType(station); // 入力された値が選択肢の範囲内なら正しいメッセージを出力 if(station >= 1 && station <= 3) { alert("その駅には" + type + "の電車が停まります"); } else { // 選択肢以外のものを入力した場合は再度入力処理の関数を実行 displayTrainType(); } } // 駅名を入力する処理 function inputStation() { var station = prompt("1.A駅 2.B駅 3.C駅\n行き先の駅を1, 2, 3から選んでください"); station = Number(station); return station; } // その駅に停まる電車の種類を取得する処理 function getTrainType(station) { var type; switch(station) { case 1: type = "快速"; break; case 2: type = "快速と急行"; break; case 3: type = "特急"; break; default: alert("駅が正しく選択されませんでした。もう一度入力してください。"); break; } return type; } // // 呼び出し元 処理を実行する displayTrainType();

以上のコードで**2つ質問があります**。
まず一つ目です。

最初のfunctionで以下のコードになっていますが

// 行き先の駅に停まる電車の種類を表示する処理 function displayTrainType() { var station = inputStation(); var type = getTrainType(station); // 入力された値が選択肢の範囲内なら正しいメッセージを出力 if(station >= 1 && station <= 3) { alert("その駅には" + type + "の電車が停まります"); } else { // 選択肢以外のものを入力した場合は再度入力処理の関数を実行 displayTrainType(); } }

このコード内の再度入力処理を促すdisplayTrainType();と
コード全体の結果を反映させるdisplayTrainType();では反映に違いがあります。

再度入力処理を促すdisplayTrainType();では、なぜ全体の結果を反映できないようになっているのでしょうか。
上記のコード内では

var station = inputStation(); var type = getTrainType(station);

のようにすでに戻り値が定義されているので、最初のfunction内で結果が反映されていてもてもおかしくないんじゃないかと思ったためです。

二つ目の質問です。

// 駅名を入力する処理 function inputStation() { var station = prompt("1.A駅 2.B駅 3.C駅\n行き先の駅を1, 2, 3から選んでください"); station = Number(station); return station; } // その駅に停まる電車の種類を取得する処理 function getTrainType(station) { var type; switch(station) { case 1: type = "快速"; break; case 2: type = "快速と急行"; break; case 3: type = "特急"; break; default: alert("駅が正しく選択されませんでした。もう一度入力してください。"); break; } return type; }

それぞれの関数内で出た変数を、最初の総括部分のfunctionに戻り値として
返していますが、その関数内で出たローカル変数をreturnで他の関数に送っても
良いのでしょうか。

グローバル変数にしか引き継いでいけないのかと考えていたためです。

分かりづらい説明ですみません!
恐縮ではございますがお答えしていただけると幸いです。
よろしくお願いいたします。

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

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

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

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

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

kuma_kuma_

2020/09/23 18:40

まず「電車ナビ」とはどこのサイトでしょうか? 次に今回の目的は「電車ナビ」のサイトの仕組みを理解したい。(技術的な模倣をしたい) という事でよろしいのでしょうか? ※「電車ナビ」がどこのサイトかわからないですが、外部から自動実行することは違反となる事が多いです。
m.ts10806

2020/09/24 00:20

自身で組んだコードではないのでしょうか。
Hogeike

2020/09/24 00:26

関数名がコードと説明で異なっていますが、同じものなら修正お願いします displayTrain()なる関数がありません
tooju

2020/09/24 01:28

すみません! 「本当によくわかるJavascriptの教科書」のサンプルコードを参照にしております! その中の電車ナビの仕組みを理解することを目的としています。 displayTrainではなく正しくはdisplayTrainType();でした!ありがとうございます!
javahack

2020/09/25 18:12

質問は編集できますので、間違いに気付いたら修正した方が良いと思います。
tooju

2020/10/02 14:37

ありがとうございます!修正できていませんでした!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問