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

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

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

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

Q&A

解決済

4回答

574閲覧

返り値というものがわかりません。

K-06

総合スコア18

JavaScript

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

0グッド

1クリップ

投稿2020/05/26 04:33

初歩的な問題で失礼します。
さっぱり返り値というものがわかりません。

下記2つ表示結果は一緒なのに、何がどう違うのでしょうか?
多分、分かる人には一目瞭然な違いなのでしょうが、以前も勉強した時に返り値のところで砕け散りました。。。。

何がどう違くて、なぜ返り値を使うのかご説明いただけたら幸いです。
ぜひよろしくお願いします。

JS

1function output_hello(){ 2 document.write("<p>hello関数:hello</p>"); 3} 4output_hello();

JS

1function make_hello_name(name){ 2 var str = '<p>make_hello_name関数: hello ' + name + '</p>'; 3 return str; 4} 5 6var hello_name = make_hello_name('鈴木'); 7document.write(hello_name); 8

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

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

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

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

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

miyabi_takatsuk

2020/05/26 07:21 編集

戻り値がある関数の使い道というか、なぜreturnを使う必要があるのか? というのがわからない、ということですか? であれば、掲示された例だと、returnの利用価値は、なにもないものと思います。 もうちょっと複雑な処理をする時に、使用する理由とかが見えるかと。 あと、掲示の二つだと、出力変わるので、尚更、例としては不適切かと。
guest

回答4

0

生成した文字列を、使う側でどうできるかが異なってきます。

make_hello_nameのほうであれば、受け取った文字列をdocument.write()するだけでなく、alert()でダイアログ表示したり、console.logに出力したり、はたまたさらに文字列加工したり…と好きなように使えます。

一方で、output_hellodocument.write()専用です。

投稿2020/05/26 04:40

maisumakun

総合スコア145184

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

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

0

ベストアンサー

示された例が対になってないので

js

1function output_hello(){ 2 document.write("<<p>make_hello_name関数: hello 鈴木 </p>"); 3} 4output_hello();

js

1function make_hello_name(name){ 2 var str = '<p>make_hello_name関数: hello ' + name + '</p>'; 3 return str; 4} 5 6var hello_name = make_hello_name('鈴木'); 7document.write(hello_name);

だとしましょう。

引数があると便利なこと

仕様で田中も出してほしいとなったら上側だと

js

1function output_hello(){ 2 document.write("<<p>make_hello_name関数: hello 鈴木 </p>"); 3} 4output_hello(); 5function output_hello2(){ 6 document.write("<<p>make_hello_name関数: hello 田中 </p>"); 7} 8output_hello(); 9output_hello2();

となりますが下だと

js

1function make_hello_name(name){ 2 var str = '<p>make_hello_name関数: hello ' + name + '</p>'; 3 return str; 4} 5 6var hello_name = make_hello_name('鈴木'); 7document.write(hello_name); 8var hello_name = make_hello_name('田中'); 9document.write(hello_name);

になります。100個追加してほしいってなったら上だと関数100個作る必要がある。下だと

js

1var hello_name = make_hello_name('田中'); 2document.write(hello_name);

を増やしていくといい。

さらに、100個追加したあとに仕様変更で<p><br>に変えてほしいってなったら上だと100個全て書き換える必要がある。下だと1個変えればOK

名前は配列に入っているから配列にある名前を出してほしいってなったら、上ではできますか?
下のやつだとループ処理できますよね。

戻り値であると便利なこと

(質問で示されてるコードだと引数ありでないと説明しづらいので引数&戻り値ありで)

js

1function output_hello(){ 2 document.write("<<p>make_hello_name関数: hello 鈴木 </p>"); 3} 4output_hello();

これだとdocument.write命令に固定の文字列を出すだけの関数になります

js

1function make_hello_name(name){ 2 var str = '<p>make_hello_name関数: hello ' + name + '</p>'; 3 return str; 4}

これだと戻り値を受け取ってそれをdocument.writeにわたすこともできますし、document.getElementById('てけ').textに代入することもできます。


効率化できると思いませんか?

※ただ問題として出せっていうだけなら問題ないけど、仕事とかだと仕様変更いっぱいあるしデータいっぱい取り扱うので効率化したいよね

投稿2020/05/26 04:44

編集2020/05/26 04:56
rururu3

総合スコア5545

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

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

q_sane_q

2020/05/26 04:49

これ、どちらかというと 返り値の有無ではなく引数の有無による差異ではないでしょうか?
rururu3

2020/05/26 04:51

ご指摘どおりですね。ちょっと変えます
q_sane_q

2020/05/26 04:58

まあ、元の質問が片方は引数なし片方は引数ありになっているのでウームってところはあるのですが…
guest

0

どっちでも大した違いはないです。深く考えない方がいいでしょう。

あえて言うなら、前者がサブルーチン的で副作用があり、後者が関数的で副作用がないのですが、学問的だったり趣味的な違いです。
初学者の内は一切気にする必要はありません。(関数型言語やサブルーチンと関数の定義が別の言語は除きます)


もしかして、return文の意味が分からない、ということであれば、質問を変更した方がいいかもしれません。

投稿2020/05/26 05:37

Lhankor_Mhy

総合スコア36115

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

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

0

関数が返す値のことです
関数が、strの値を返してます
その関数を呼び出した側が、返り値を変数に入れるなりして使うことができます

投稿2020/05/26 04:40

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問