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

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

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

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

Q&A

解決済

4回答

447閲覧

JavaScriptにおける戻り値という概念に関して

kanemichi

総合スコア10

JavaScript

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

0グッド

0クリップ

投稿2020/06/09 08:38

編集2020/06/09 08:39

前提・実現したいこと

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

Progate___JavaScriptの「関数」、「引数」、「戻り値」で躓いています。

該当のソースコード

↓↓↓↓↓↓↓↓↓↓↓下記にコード、コメント、仮説を記述します。↓↓↓↓↓↓↓↓↓↓↓

const check = (number) => {
// numberが3の倍数かどうかを戻り値として返してください//
return number % 3 === 0;

};

上記の処理は以下で実行されるという認識です。

  1. checkにnumberという関数(引数)を代入
  2. 3の倍数かの真偽を「number % 3 === 0」で処理。

3.returnでcheckに戻す///// (この時の戻すという理屈、事象が理解できません。)

// if文の条件式で、checkを呼び出してください

if (check(123)) {
console.log("3の倍数です");
} else {
console.log("3の倍数ではありません");
}

///この際、if、check、(check(123))はどの様な属性名なのでしょうか。

コンソールには「3の倍数です」と表示されます。

自身の仮説

前半 ----ほぼ理解できません。
-後半
----if以外でもforやwhileでも「関数?、引数?、定数?」を呼び出すことはあるのでしょうか。(ケースバイケースだと思いますが。)

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

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

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

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

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

guest

回答4

0

数学の関数と同じです。

数学でf(x) = x * 2 + 1という関数があれば、f(0)1という値を持つし、f(1)3という値を持ちます。f(x)*g(1-x)h(f(x))と別の関数と組み合わせたりも出来ます。
そういうのと同じです。

質問の例だと、check(0)trueという値を持つし、check(1)falseという値を持ちます。それを、式が書けるどこにでも書けます。

投稿2020/06/09 08:52

otn

総合スコア85901

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

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

kanemichi

2020/06/09 17:50

大変丁寧なご回答ありがとうございます。 今後の基礎学習の励みにさせて頂きます。
guest

0

ベストアンサー

そのコードだけ読んでも理解出来ないでしょう。
関数は呼び出されなければ、戻りません

  1. 関数定義
  2. 関数呼び出し
  3. 関数定義に行って、実行
  4. 処理完了時、呼び出し元に戻る
  5. 呼び出し元で「戻り値」が評価される

JavaScript

1const check = (number) => number % 3 === 0; // 関数定義 2const returnValue = check(3); // 関数呼び出し→関数定義に行く→戻ってくる→戻り値を評価 3console.log(returnValue);

Re: kanemiichi さん

投稿2020/06/09 09:41

think49

総合スコア18189

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

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

kanemichi

2020/06/09 17:50

大変丁寧なご回答ありがとうございます。 今後の基礎学習の励みにさせて頂きます。
guest

0

js

1( 1 + 1 ) * 2

↑と↓が等価であることは分かるかと思います。

js

1( 2 ) * 2

これはなぜかというと、1+1を計算すると2になるからです。

同じように、

js

1if ( check(123) ) {

↑これは、↓これらと等価です。

js

1if ( number % 3 === 0 ) { 2 3if ( 123 % 3 === 0 ) { 4 5if ( true ) {

これはなぜかというと、check(123)を計算すると、number % 3 === 0になって、123 % 3 === 0になって、trueになるからです。

投稿2020/06/09 09:15

Lhankor_Mhy

総合スコア36960

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

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

kanemichi

2020/06/09 17:50

大変丁寧なご回答ありがとうございます。 今後の基礎学習の励みにさせて頂きます。
guest

0

関数が自動販売機だとすると、引数がお金で、戻り値が缶ジュースやお釣り
というイメージでよいでしょう(却って分かりづらい?)

投稿2020/06/09 08:48

yambejp

総合スコア116734

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

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

gentaro

2020/06/09 09:17

複数戻り値をサポートしていない言語で「缶ジュースやお釣り」を戻り値とする例えは非常にわかりにくいんじゃないでしょうか。
yambejp

2020/06/09 09:19

ブラックボックスの最初の説明がたしか自動販売機だったかと。 いまはそうでもないのでしょうか
kanemichi

2020/06/09 17:50

大変丁寧なご回答ありがとうございます。 今後の基礎学習の励みにさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問