JavaScriptの関数オブジェクトを完璧に理解する

白石俊平(あゆた)
2008-04-11 16:00:00
  • このエントリーをはてなブックマークに追加

argumentsオブジェクト

 関数が呼び出されると、引数をすべて格納した値として、関数内からはargumentsと言う変数を利用することができます。

 argumentsの構造は、「引数に指定された値が順番に並んでいる配列」だと言えます。

 以下に使用例を示します。引数を二つ取り、加算して返すadd()関数を想定してください。

function add(a, b) {
  return a+b;
}

 以下に示すのは、この関数をargumentsを使用するように書き換えたものです。

function add(a, b) {
  return arguments[0] + arguments[1];
}

 argumentsを用いれば、引数の数を固定しない、つまり「可変長引数」を実現することができます。以下に示すのは、引数として与えられた値をすべて合計して返す、と言う関数の例です。

function sum() {
  var result = 0;
  for (var i = 0, n = arguments.length; i < n; i++) {
    result += arguments[i];
  }
  return result;
}
// 6が表示される
alert(sum(1, 2, 3));

 先ほど、argumentsは「配列である」と申し上げましたが、厳密に言うとこれは間違いです。argumentsは以下のようなメンバを持つ、「配列に似た」(通常の)オブジェクトです。

  • arguments.callee・・・この引数を与えられた関数自身
  • arguments.length・・・与えられた引数の個数
  • arguments.0〜n・・・nは正数値。引数が与えられた順序に対応した、正数値のプロパティ。

まとめと次回予告

 今回は、JavaScriptの関数(Function)が持つ様々な機能について紹介しました。今回紹介した機能は、あまり頻繁に使うというものではありませんが、覚えておいて損になることは全くありません。やはり何といっても、JavaScriptの中核をなすのは「関数」という概念ですから。

 次回は、今回のargumentsにも関連した話題として、「ローカル変数と変数のスコープチェイン」についてお話ししたいと思います。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]