関数とは?関数の仕組みについてまとめてみた。

関数とは外部 (再帰の場合は内部) から呼ばれることのできる「サブプログラム」です。関数を使用することでまとまった処理を実行することが可能です。関数は様々な処理をまとめることができる「機能」だと思ってください。
関数に様々な処理を1つにまとめて使用することができます。単調な処理を1つにまとめて、どこからでも使えるように効率化するという目的でよく使われています。
もくじ
関数とは?
関数とは外部 (再帰の場合は内部) から呼ばれることのできる「サブプログラム」です。プログラムそのもののように、関数は関数本体と呼ばれる連続した文で構成されます。値を関数に渡す事ができ、関数は値を返す事ができます。
JavaScriptでは、関数もオブジェクトです(Functionオブジェクト)。オブジェクトであるから、プロパティやメソッドを持ってます。
関数を定義する方法
関数は「function」で関数宣言を行い、その後に関数名を指定します。関数名として付けることができる名前は自由に指定可能です。ただし、予約語は使用できませんのでご注意ください。
- function.js
-
function 関数名( ){ 実行される処理; }
関数が呼び出された時に実行される処理内容を「{」から「}」のブロック内に記述します。引数が無い場合は記述しなくて大丈夫です。
引数を使用する場合
- function.js
-
function 関数名(引数名1,引数名2...){ 実行される処理; } 関数名(引数名1,引数名2);
引数を使う場合、変数名の後ろの「(」から「)」の中に引数を指定します。複数の引数がある場合には ,(カンマ)で区切って記述して下さい。
関数式の場合
- function.js
-
var hoge = function 関数名(){ 実行される処理; }
関数は変数に代入することができます。変数に代入することで別の処理内で実行することが可能です。関数を変数に代入するので「関数式」と呼ばれてます。
関数式では、関数名を省略できます。関数式はそのままでは呼び出せず、変数に代入するなどしてから呼び出します。
関数の意味を考える
関数は、小さなプログラムです。何か一連のまとまった処理をさせます。他にもプログラムを読みやすくしたり、何度も使うコードを簡単に呼び出せるようにするためのものです。
例えばあまり関数に関する関連性のないプログラムを作ってしまうとどうなるでしょうか?下記にサンプルコードを用意ました。
- function.js
-
// 関数のサンプルコード1 function add(num1, num2) { return num1 + num2; } add(1, 2); // 3と出力される
このプログラムは関数を定義し、その中で値を足して結果を戻り値で返すプログラムです。しかし、このプログラムをみて「普通に足せば良いじゃん!?」と心のツッコミを入れたくなります。
- function.js
-
// 関数のサンプルコード2 function hoge() { console.log("hello"); } hoge(); // "hello"と出力される
こちらのプログラムは関数を定義し、関数を実行させて文字を出力させるプログラムです。上のプログラムと同じく「普通にconsoleでやれば良いじゃん!?」と心の中で思いますよね。
こんなサンプルコードを見たら、このコードにいったい何の意味があるのだろう?と思うでしょう。関数の書き方はわかるけど、役割について疑問に思うことありませんか?
実際、このコードには意味がありません。関数の定義の仕方の説明としては意味があっても、「何を関数にするか?」「この関数の役割は?」という疑問に答えてくれません。
要は学習する中で関数を作るときは「意味のある関数」を作らなければいけません。ある程度、設計を考えて関数を作成しないといけません。
まとめ

関数を定義するということ、関数に名前をつけるということはアプリケーションの設計そのものです。意味がある関数を定義し、意味ある関数名をつけることがアプリケーションの設計の始まりです。
更に関数の力は絶大で値を受け取ったり、何らかの処理を行った値を返すことも可能なので、最小のコードで最大限のパワーを引き出せる力を秘めています。関数の力を引き出すことで関数はとても便利な機能だと気づくと思います。