関数を定義します。関数とは、よく使用する処理をサブルーチンとして定義するものです。例えば、時:分:秒を秒数に変換する関数を定義するには次のようにします。
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 は、関数(処理)を定義するだけではなく、クラスを定義する目的でも使用されます。詳細は「クラスを定義する」を参照してください。
変数は通常グローバル変数(プログラム全体で有効な値)として扱われますが、arg1, arg2, ... 部分に指定した変数や、関数内で var で定義した変数は ローカル変数(関数内部でのみ有効な値)として扱われます。グローバル変数とローカル変数は、名前が同じでも別の変数として扱われます。
下記の例では、グローバル変数 xx と、ローカル変数 xx は名前は同じでも別の変数として扱われます。
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 を代入
}
関数オブジェクトを作成します。下記のコードは上記のfunctionによる宣言と同等です。この方法はあまり利用されることはありません。
add = new Function("x", "y", "return(x+y)");
関数が要求する引数の個数を返します。
function goukei(a, b, c) { return(a + b + c); }
n = goukei.arity;
引数の配列。個数不定の引数を受け取る際に便利です。
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);
この関数を呼び出した関数。将来の JavaScript のバージョンでは削除される予定らしいので使用しない方が無難です。
function func1(x, y) {
func2();
}
function func2() {
alert(func2.caller.arguments.caller);
}
JavaScript 1.3 で追加されたメソッドで、クラスの継承を実現します。詳細は「クラスを継承する」を参照してください。