質問: JavaScriptの関数について教えてください。 function 関数名 (引数) { 実行する処理 return 戻り値 } この形はわかりますし、 functionで関数を書くことを決めて 関数名を書くところまではわかります。 その後の引数はどのようなものなのでしょうか。 どういったときに入れるのでしょうか。 また、引数には変数や関数など、なんでも入れられるのでしょうか。 その後の実行する処理はどれに対して実行するのでしょうか。 それともこの考え方自体が間違えで、どれに対してではなく、関数単体で処理が実行される場面もあるのでしょうか。 また、戻り値とはどこに戻るのでしょう。 consolに出てくるのでしょうか? 考えても考えても堂々巡りで、、、、 わかりやすく説明してくださる方、お願いします、、、
回答: 数学の知識があれば説明しやすいんですけど。。(^ ^; 理解しておられるということですが、自己流に全部説明してみようと思います。もし「わかってるよ!!」って感じでしたらすみません。。なるべく質問の直接的な答えとなりそうな部分は**太字**になるようにしました。 簡単にいうと関数とは「入力を与えると出力を返す函(箱)」といったイメージのものです。(ですからもともとは函数と書いたそうですが、現在では関数と書きます。) う〜んそうですね。。電子レンジを想像してみてください。この場合、 * 温めたいもの -> 処理したい入力 * 電子レンジ -> 関数 * 温まったもの -> 処理結果となる出力 といった対応関係があります。 電子レンジと違い、プログラミングにおいて温めたいもの、入力(引数)はデータだけでいいですから、**引数に与えられた変数は変化しません。** (意図的に変化させるように処理を書くこともできますが、あんまり無いです。しかも変化させられるのは配列等が引数に入った時ですから、普通は意識しなくてかまいません。忘れてください。) そのためその点は安心してください。(何を?笑) ちなみに質問者様の仰った通り、引数には何が入っても構いませんが、処理内容によってはエラーになります。 そこは関数の仕様を調べておけば大丈夫です。 javascriptの場合、 ``` function denshirengi(in){ // 処理 return out; } ``` っていうのは、電子レンジを設定しているようなものです。 この場合`in`が入力(引数)で`out`が出力(返り値)です。このコードは`denshirengi`という関数を定義しています。 `in`は関数内に置ける呼称です。`in`でなくとも、変数名と同じで、予約語で無ければ(既に変数名で使われていたとしても)何でもいいです。 ただ電子レンジは買っただけでは意味がありませんよね? 使ってなんぼです。使う時は`denshirengi(atatamerumono)`という風に、関数名(渡す入力)と書きます。 この時入力に変数を渡すとその中身が、データ型(`0`とか`1`とか`"hoge"`とか)を渡すとそのものが引数に(上記の場合は`in`に)入ります。 そして`return`の後にある値が、**処理が終わった後に`denshirengi(atatamerumono)`の部分に置き換わります。**電子レンジから温まったものが出て来たイメージです。 時には`return`そのもの、または`return`の後ろの値(返り値)が無いこともあります。その場合は`undefined`が返ってきます。こういうときは言語によっては`function`(関数)ではなく`procedure`(手続き、手順)と呼ばれたりします。 javascriptでの呼称は不明ですが、同じく関数でいいと思います。 `return`がない関数には例えば`alert`や`console.log`があります。 とりあえず説明できる点は説明したつもりですが、不明な点があれば返信ください。m(_ _)m 最後に例として、二つの数を足す関数を定義してみます。 ``` function add(a,b){ // 引数はいくつでも良い。 return a+b; // returnされるのはa+bの処理が終わった後なので、このように書くことが可能 } var c = add(1,2); // add(1,2)が3に置き換わる alert(c); // => 3 ``` (長文失礼しました。m(_ _)m)