関数
関数って何?
他のプログラミング言語と似てる書き方
変数定義のような書き方
アロー関数
即時関数


関数って何?
関数とは数学でならった三角関数、指数関数などのイメージが湧くと思います。 数学的な計算以外で画像を表示したり音声を鳴らしたりする処理も関数です。 わかりやすい言葉でいえば、プログラムを構成するする処理の単位です。 卒業式というプログラムで校長挨拶などが関数です。
JavaScriptではいろいろな関数の記述があるので覚えるのが大変です。 これらをやさしく書いてみます。


他のプログラミング言語と似てる書き方
一番素直な記述方法です。

function 関数名(引数)

具体的には、

function add2(a){
	return a + 2;
}

こんな感じで簡潔です。
関数であることを宣言するためにfunctionをつけます。
次に関数の名前add2を記述します。
次に()内に引数を記述します。引数がなければ空白にします。
最後に{}に処理を記述します。
C言語のような型宣言は不要です。


変数定義のような書き方
いよいよJavaScript特有のわかりにくい関数の書き方です。 JavaScriptは数値も変数も関数もすべてオブジェクトにしています。 変数の定義に倣って書くと、

var add2 =

という感じになりますが、右辺はどうなるでしょうか?
functionをつかって定義します。 具体的には、

var add2 = function(a){
	return a + 2;
}

なんか少し違和感がありますね。


アロー関数
更にJavaScript特有のわかりにくい関数の書き方です。 変数定義のような書き方をさらいアップグレードした記述方法です。 functionと()の順番を入れ替えたような記述です。

すごく違和感がありますね。
これ以上にグレードアップした記述も紹介します。

    //引数なし 返り値なし
	// 従来の関数
	var fn1 = function(){
		console.log("hello");
	};

	//アロー関数
	var fn2 =  () =>{
		console.log("world.");
	};

	// 引数あり 返り値あり
	// 従来の関数
	var fn3 = function(a, b){
		return a + b;
	};

	//アロー関数
	var fn4 = (a, b) => {
		return a + b;
	};

	//処理が1行だけなら{}も省略できる
	var fn5 = (a, b) =>  a + b;

	//引数が1つの時は()も省略できる
	var fn6 = a => a + 100;

	fn1();
    fn2();
	console.log(fn3(1, 2));
	console.log(fn4(10, 20));
	console.log(fn5(100, 200));
	console.log(fn6(1000));

結果は:

hello
world.
3
30
300
1100


即時関数
更にJavaScript特有の他の言語にはない変わり種の関数です。
即時関数とは、関数を定義したと同時に実行までしてしまう関数です。
書き方:

(function() {
	console.log('hello');
})();	

関数に名前がないので呼び出せません。つまりこの関数は即実行しか生きる道がありません。
変な関数この上ないですが、こう考えるとわかりやすいです。

普通の関数定義の両端に()をつけて即時関数(名無し)になりそのあとに引数を入れる()つけます。
イメージ的には
名無しの関数();
となります。
アロー関数でも記述できます。

(()=> {
	console.log('world');
})();	
	  
()の数がたくさんあって見ずらいですね。