一連の処理をひとまとめにして、名前をつけたものを「関数」と呼びます。
手間のかかる処理を関数として定義しておけば、必要なときに必要なだけ何度も呼び出すことができます。
関数は、function文を使って定義する。
定義した関数を実行するときは、関数名を記述するだけで良い。
関数の定義
function 関数名 () { 処理; }
定義した関数の使い方
関数名 ();
実際に関数を使ってみましょう
<script> //関数の定義 function hello() { document.write('こんにちは'); } hello(); //関数の呼び出し </script>
関数の定義は記述順序に関係なく優先的に行われるので、関数の呼び出しが先に記述されてもいても問題なく動作します。
<script> hello(); //関数の呼び出し //関数の定義 function hello() { document.write('こんにちは'); } </script>
「buttonタグ」を使ってみましょう。
<body> <button onClick="time();">ボタン</button> <script> var date = new Date(); //関数の定義 function time() { document.write(date); } </script> </body>
ローカル変数とグローバル変数
ローカル変数とは関数の中でのみ使用出来る変数で、グローバル変数とはjavascript全体で使える変数です。
- 関数の中で宣言した場合はローカル変数
- 関数の外で宣言した場合はグローバル変数
になります。
一見、グローバル変数の方がどこでも変数を呼び出せるので便利に感じますが、他のプログラムとバッティングしてしまう恐れがあります。最近ではこういった「グローバル汚染」が起こらないように有効範囲の狭い「let」を使う事が推奨されています。
DOMでおみくじを作る
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>おみくじを作る</title> </head> <body> <button onclick="omikuji()">おみくじを引く</button> <p><img src="img/omijikuji.png" alt="" id="photo"></p> <script> function omikuji(){ var kuji = new Array(4); kuji[0] = 'daikichi.png'; kuji[1] = 'chuukichi.png'; kuji[2] = 'kichi.png'; kuji[3] = 'daikyou.png'; console.log(kuji[3]); //0~3までが出るMath.randomの設定 var i = Math.floor(Math.random()*4); console.log(i); //#photoのsrcをdomで書き換える document.getElementById('photo').src = 'img/'+kuji[i]; } </script> </body> </html>