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

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

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

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

Q&A

解決済

2回答

516閲覧

javascript関数のコードの理解に関して。(progate/javascript学習レッスン/関数を学ぼう/総合演習)

tkm0604

総合スコア555

JavaScript

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

0グッド

0クリップ

投稿2021/11/29 06:19

progateでjavascriptを学習しております。

progate/javascript学習レッスン/関数を学ぼう/総合演習で、以下のコードでなんとなく理解が出来ていない箇所があります。

javascript

1const number1 = 1; 2const number2 = 3; 3const number3 = 5; 4 5// getMax関数を定義してください 6getMax=(a,b,c)=>{ 7 let max = a; 8 if(b > max){ 9 max = b; 10 }if(c > max){ 11 max = c; 12 } 13 return max; 14} 15 16// 「最大値は○○です」と出力してください 17const maxNum = getMax(number1,number2,number3); 18console.log(`最大値は${maxNum}です`);

上記コードのgetMax()関数の返り値(return max)の考え方として、
getMax()関数は 引数にあたえられた値を変数maxとして返す。という理解でいいでしょうか?
return max;の捉え方がいまいち腑に落ちません。

どなたかよろしければ解説お願いします。

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

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

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

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

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

guest

回答2

0

関数自体がわからないってことでしょうか?

多分、数学の関数とほぼ一緒だと思います。f(x)とかみたいな。
なんらかの値xをf(x)に与えると、処理されてその結果が返ってくるっていう。

y = f(x) に x = 5 だとすると、y = f(5) = 100 とか。
ただ、数学と違うのは、計算だけではなく、処理もするってことです。たとえばconsole.logとかみたいに。

呼び出し側は処理する大雑把な内容と引数と呼ばれる処理対象、そしてその結果だけ分かっていればいいのです。処理方法は関数がやってくれます。

でも、

JavaScript

1function Calc(a,b,c){ 2 let d = a * b * c; 3}

とすると、単に関数内で処理しているだけで、呼び出し側はこのdを取得できません。(JavaScriptの場合、やろうと思えばできなくはないが)

そこで、関数を呼び出している側(呼び出し側)にその処理結果を返したいですね。ということで、returnによって値を返すのです。つまり『呼び出し側に処理結果を渡すため』にreturnを使うのです。

ただし、処理だけして結果を返さなくてもいいような関数もあります。その場合はreturnは不要です。

でも、

JavaScript

1function Calc( a, b, c ){ 2 if( a == 0 ) return; 3 4 console.log( a + b + c ); 5}

のように、途中で関数を終了する場合もあえてreturnを使うこともありますが、基本的には『呼び出し側に計算結果や処理結果を渡したい』ときにreturnを使います。

ちなみに、質問にある、getMax=(a,b,c)=>...みたいな書き方は、「関数をオブジェクトとして見なしている」らしいです。

投稿2021/11/29 10:09

BeatStar

総合スコア4962

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

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

tkm0604

2021/11/29 11:48

丁寧な解説ありがとうございます。今回の場合、 return max; によって getMax(number1,number2,number3);に処理結果を渡している。   スッキリできました。 ありがとうございます。
guest

0

ベストアンサー

何がわからないかわかりませんが

  • 引数が3つ、順にa,b,cとあって、とりあえず最初の数が最大値とする
  • 最大値(max)とbを比べて大きいほうがmax
  • 最大値(max)とcを比べて大きいほうがmax
  • 最終的に変数maxを返す

フローチャートなど書いてみれば非常にシンプルな構造だとわかると思いますが・・・
実際にはMath.maxなどで処理すれば済む話です

投稿2021/11/29 06:36

yambejp

総合スコア116724

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

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

tkm0604

2021/11/29 06:58

コメント、ありがとうございます。 return max の maxはどこに返されているのか?という質問だったのですが、 getMax()関数を実行すると、処理結果として、変数maxという値が返ってくる。 という考えでいいでしょうか?
tkm0604

2021/11/29 11:30

ありがとうございます。 納得できました。 もっと勉強して慣れていきます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問