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で使用されます。



ホームページへ戻る