## 関数（Function）

[up] [prev] [next]

#### ■ 一覧

apply(), arity, arguments, call(), caller, function, Function(), prototype

#### ■ 関数

◆ function func(arg1, arg2, ...) { ... } (e3/N2)

関数を定義します。関数とは、よく使用する処理をサブルーチンとして定義するものです。例えば、時：分：秒を秒数に変換する関数を定義するには次のようにします。

    function toSeconds(hour, min, sec) {
        var answer = hour * 3600 + min * 60 + sec;
        return(answer);
    }

この関数は次のようにして呼び出すことができます。

    sec1 = toSeconds(12, 34, 56);
    sec2 = toSeconds(23, 59, 59);

関数は、関数を呼び出す個所よりも前の部分であれば、どこで定義しておいても構いません。通常は、<head>〜</head> の間や、外部ファイルで定義します。

    <html>
     <head>
      <title>TEST</title>
      <script type="text/javascript">
      <!--
      function toSeconds(hour, min, sec) {
          var answer = hour * 3600 + min * 60 + sec;
          return(answer);
      }
      // -->
      </script>
     </head>
     <body>
      <script type="text/javascript">
       <!--
       document.write(toSeconds(12, 34, 56));
       // -->
      </script>
     </body>
    </html>

function は、関数（処理）を定義するだけではなく、クラスを定義する目的でも使用されます。詳細は「クラスを定義する」を参照してください。

#### ■ 引数と戻り値

上記の例における hour, min, src などのように、関数に渡す値を引数、answer の値のように関数から戻される値を戻り値と呼びます。

#### ■ グローバル変数とローカル変数

変数は通常グローバル変数（プログラム全体で有効な値）として扱われますが、arg1, arg2, ... 部分に指定した変数や、関数内で var で定義した変数は ローカル変数（関数内部でのみ有効な値）として扱われます。グローバル変数とローカル変数は、名前が同じでも別の変数として扱われます。

下記の例では、xx はグローバル変数として、yy はグローバル変数やローカル変数として扱われます。

    xx = 5;   // グローバル変数 xx に 5 を代入
    yy = 5;   // グローバル変数 yy に 5 を代入

    func();   // 関数 func() を呼び出す

    alert("xx = " + xx);  // グローバル変数 xx を表示（5 が表示される）
    alert("yy = " + yy);  // グローバル変数 yy を表示（8 が表示される）

    function func() {
       var xx = 8;    // ローカル変数 xx に 8 を代入
       yy = 8;        // グローバル変数 yy に 8 を代入
    }

#### ■ 関数オブジェクト

◆ func = new Function(arg1, arg2, ..., statements) (e4/N3)

関数オブジェクトを作成します。下記のコードは上記のfunctionによる宣言と同等です。この方法はあまり利用されることはありません。

    add = new Function("x", "y", "return(x+y)");

◆ func.arity (N4)

関数が要求する引数の個数を返します。

    function goukei(a, b, c) { return(a + b + c); }
    n = goukei.arity;

◆ func.arguments (e4/N3)

引数の配列。個数不定の引数を受け取る際に便利です。

    function goukei() {
        var ans = 0;
        for (i = 0; i < goukei.arguments.length; i++) {
            ans += goukei.arguments[i];
        }
        return(ans);
    }
    sum = goukei(1, 2, 3, 4, 5);

◆ func.caller (e4/N3)

この関数を呼び出した関数。将来の JavaScript のバージョンでは削除される予定らしいので使用しない方が無難です。

    function func1(x, y) {
        func2();
    }
    function func2() {
        alert(func2.caller.arguments.caller);
    }

◆ func.prototype.newName (e4/N3)

→ prototype

◆ func.call(this, arg,...) (N406)
◆ func.allpy(this, args) (N406)

JavaScript 1.3 で追加されたメソッドで、クラスの継承を実現します。詳細は「クラスを継承する」を参照してください。

[up] [prev] [next]
Copyright (C) 1996-2001 杜甫々
改訂版初版：2001年5月20日、最終更新：2001年6月3日
http://www.tohoho-web.com/js/function.htm