関数

Index Back Next

【関数】

ここではユーザー関数について説明します.JavaScriptにいて関数をコールするには,単に「関数名();」とすればよい.関数名の後ろの( )内には,関数に受け渡すデータを書きます.このデータのことを実引数と呼びます.これに対して,関数側では,変数を受け取るために,変数を書きます.そしてこの変数を仮引数と呼びます.

	関数名([実引数の並び]); ・・・・関数のコール
	
	
	function 関数名([仮引数の並び]){	・・・・関数の定義
		
		[ 文 ]

		[ return(式) ;] ・・・・値が返される,戻り値
	}
引数がいくつかあればカンマ(,)でくぎりますが,ない場合は省略します.そして関数の最後,またはreturn文により,コールされた元へリターンします.この際,return文の式の値が戻り値として,コール元へ返されます.

【関数における変数】

前にも述べたと思いますが,関数内で宣言された変数は,その関数内で有効なものであり,全ての関数で共通に使用したいなら,変数を関数の外で宣言しなくてはいけません.


[例1]

ここでは絶対値を求める関数Abs()を作り,3と-12の絶対値を求めてみた.
	<SCRIPT LANGUAGE="JavaScript">
	<!--
	function Abs( a ){
		if( a >= 0 ) return a;		//(1)
		else return -a;		//(2)
	}
	var i=3,j=-12; 		//3と-12の絶対値を求める
	document.write( Abs( i ) );	
	document.write( Abs( j ) );
	//-->
	</SCRIPT>


【解説】

(1)aが正ならそのままの値を返します.
(2)aが負なら符号を反転した値を返します.

ちなみにMathオブジェクトに絶対値を求めるabsメソッドがあります.

	<SCRIPT LANGUAGE="JavaScript">
	<!--
	var i=3,j=-12;
	document.write( Math.abs( i ) , "<BR>" );	//Mathオブジェクトのabsメソッド使用
	document.write( Math.abs( j ) , "<BR>" );	//Mathオブジェクトのabsメソッド使用
	//-->
	</SCRIPT>
とすれば同様の結果がえられます.


【実行結果】


[例2]

データの入った配列を引数として渡し,小さい順に並べ替える関数Sort()と平均値を求めるMean()を作る.
	<SCRIPT LANGUAGE="JavaScript">
	<!--
	function Mean( n , a ){	//(1)
		var k,sum=0;
		for( k = 0; k < n; k++){	//合計を算出	
			sum = sum + a[k];
		}
		return ( sum / n );	//平均値をコール元へ返す
	}
	function Sort( n , a ){		//(2)
		var k,l,s,Min,dumy;
		for( k = 0; k < n - 1; k++ ){
			Min = a[k];
			s = k;
			for( l = k + 1; l < n ; l++ ){
				if( a[l] < Min ){
					Min = a[L];
					s = l;
				}
			}
			dumy= a[k]; //交換のためにダミーに一時格納
			a[k] = a[s];  //第k項にs項の値を代入 
			a[s] = dumy; //第s項にdumyの値を代入する事で交換完了
		}	
	}
	var i;
	var P = new Array(5);
	P[0] = 100;	//データ
	P[1] = 200;
	P[2] = 5.5;
	P[3] = 1000;
	P[4] = 120;
	Sort( 5 ,P);	//並び替え
	for( i = 0; i < 5; I++ ){
		document.write( "No." , i + 1 , " " , P[i] , "<BR>" ); //小さい順に表示
	}
	document.write( "平均値=" , Mean( 5 , P ) ); //平均値の算出と表示
	//-->
	</SCRIPT>

【解説】

(1)平均値を求める関数.
(2)配列データを小さい順にソートする関数

ソートの考え方:n個のデータの中から最小項をさがし,それを第1項と交換します.これで1項は決定したので,次に第2項以降のn-1個のデータの中から最小項をさがし,それを第2項と交換します.これをn-1回繰り返すと,データが小さい順にソートできます.


【実行結果】


1998(C) Motonari Morikawa