JavaScriptで書いてみよう! (関数)
ここでは関数について説明します。
関数の定義
関数の定義は以下のキーワードから構成されます。
・関数名
・括弧で囲まれ、コンマで区切られた引数の並び
・括弧({})で囲まれた関数を定義するステートメント
構文:
function name([param[, param[, ... param]]]) {
statements
}
statementsには別の関数への呼び出しが含まれていても構いません。一般的に、すべての関数は最初にロードされるようにヘッダーに書いてください。そうでなければ、ロード中にイベントハンドラにより関数が呼ばれた場合に、未定義関数としてエラーになる場合があります。
例:
function square(number) {
return number * number;
}
関数squareはnumberを受け取り、number * numberを返します。引数は値による呼び出しなので、値を変えても呼び出し元での値は変わりません。しかしながら、オブジェクトを受け取り、そのプロパティを変えた場合は関数の外でも反映されます。
例:
function myFunc(theObject) {
theObject.make="Toyota"
}
mycar = {make:"Honda", model:"Accord", year:1998}
x=mycar.make //Hondaを返す
myFunc(mycar) //関数にオブジクトmycarを渡す
y=mycar.make //Toyotaを返す(プロパティは関数により変更された)
関数の呼び出し
アプリケーションは、現在のページで定義されたすべての関数を呼び出すことができます。また、別の名前のついたウィンドウまたはフレームの関数を呼び出すことができます。
関数は定義されただけでは実行されません。定義は関数に名前をつけ、関数が呼ばれたときに何をするかを決めるだけです。関数の呼び出しが実際に関数を実行します。
例:
square(5)
引数は文字列、数だけでなくオブジェクトでも構いません。また、関数は再帰的に自分自身を呼び出しても構いません。
例:
function factorial(n) {
if ((n == 0) || (n == 1))
return 1
else {
result = (n * factorial(n-1) )
return result
}
}
a=factorial(1) // 1を返す
b=factorial(2) // 2を返す
c=factorial(3) // 6を返す
d=factorial(4) // 24を返す
e=factorial(5) // 120を返す
引数配列
関数への引数は配列に格納されます。関数の内では、以下のようにして参照できます。
構文:
arguments[i]
functionName.arguments[i]
iは0から始まる引数の順番です。したがって、一番目の引数はarguments[0]で表されます。引数の数はarguments.lengthに格納されます。これは、引数がいくつ渡されるかわからない場合に便利です。arguments.lengthには実際に渡された引数の数が格納されます。
例:
function myConcat(separator) {
result="" // 初期化
// 引数の繰り返し
for (var i=1; i<arguments.length; i++) {
result += arguments[i] + separator
}
return result
}
組込関数
JavaScriptはいかくつかのtop-levelの組込関数を持っています。
eval関数
eval関数はJavaScriptのコード文字列を特定のオブジェクトへの参照なしに評価します。
構文:
eval(expr)
引数が式の場合は、式を評価します。引数がステートメントの場合は、ステートメントを実行します。数式はeval関数を使用しなくても自動的に評価されます。
isFinite関数
isFinite関数は引数を評価し、有限な数かどうかを返します。
構文:
isFinite(number)
引数がNaN、プラスの無限、マイナスの無限の場合falseを、そうでなければ、trueを返します。
例:
if(isFinite(ClientInput) == true)
{
/* ここにステップを記述する */
}
isNaN関数
isNaN関数は引数を評価し、"NaN"(not a number)かどうかを返します。
構文:
isNaN(testValue)
parseFloat関数、parseInt関数は引数が数でない場合"NaN"を返します。isNaNは引数が"NaN"であれぱtrueを、そうでなければfalseを返します。
例:
floatValue=parseFloat(toFloat)
if (isNaN(floatValue)) {
notFloat()
} else {
isFloat()
}
parseInt関数とparseFloat関数
引数の文字列により、数を返します。
構文:
parseFloat(str)
引数により、浮動小数点数を返します。引数の最初の文字が数でない場合は"NaN"(not a number)を返します。解析できた文字までの数を返します。
構文:
parseInt(str [, radix])
引数により、radixで指定された進数の整数を返します。10は10進数、8は8進数、16は16進数です。10進数を超える進数の場合は、アルファベットで9より数字を表します。引数の最初の文字が指定された進数で数字でない場合は"NaN"を返します。解析できた文字までの数を返します。
Number関数とString関数
引数のオブジェクトを数または文字列に変換します。
構文:
Number(objRef)
String(objRef)
例:
D = new Date (430054663215)
x = String(D)
//"Thu Aug 18 04:37:43 GMT-0700 (Pacific Daylight Time) 1983"
//を返します
escape関数とunescape関数
escape関数はISO Latin character setに対応するキャラクタを返し、unescape関数はASCIIコードを返します。
構文:
escape(string)
unescape(string)
これらの関数は基本的に、サーバサイドJavaScriptで使用されます。
ホームページへ戻る
|