JavaScriptの関数オブジェクトを完璧に理解する
白石俊平
2008/04/11 16:00
JavaScript関数の実体は、Functionクラスのオブジェクトです。今回はFunctionクラスの機能を網羅的に解説します。
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にも関連した話題として、「ローカル変数と変数のスコープチェイン」についてお話ししたいと思います。
- 特集: JavaScriptのイロハ (17件)
- ホワイトペーパー
- 話題のタグ
iPod touch
Webデザイン
Leopard
Windows
SOA
Mozilla
Opera
C/C++
CSS
JavaScript
Safari
開発環境
iPhone
HTML
Java
iPhone 3G
CSS 3
Firefox
Firefox 3
Mac OS X
Database
Google
Ajax
小技
Apache
Solaris
オープンソース
Eclipse
Off Topic
Apple
Tips
ブラウザ
Python
入門
フレームワーク
Ruby
server
Flash
Webアプリケーション開発
リファレンス
PHP
Linux
仮想化
Internet Explorer
ライブラリ
XHTML
イロハ
Adobe
RIA
Microsoft
話題のタグを見る »
無料の「Oracle Database XE」で高速バッチ処理:実装のポイント
Firefoxで情報をカンタン・ベンリに整理する
iPhone Safari、Acidテストでは高得点でも…… Firefoxは載らないの?:WebサイトのiPhone 3G対応問題を考える(ソフト編)
WebサイトのiPhone 3G対応問題を考える(ハード編)
フォトレポート:時代を振り返る--「MS-DOS 4」のインストール
SOAと仮想化の関係は?--常に進化を続けるBEAのミドルウェア戦略
ウェブ開発の生産性はどうしたら上がる?--MODIPHI Appsで半日で作るマッシュアップサイト(1)
プロジェクトの進行でよくある4つのトラブル
JailBreakついに:PwnageTool公開
iPhoneに付く指紋が…… ひとまずおすすめのシリコンケース
contentプロパティでコンテンツを追加する(2):FirefoxとSafariのCSS
iPhone 24時間耐久レース:バッテリーは実際何時間?
フォームデザイン虎の巻:フォームの基礎をおさえる
DELLが掲げる「新・仮想化アセスメントサービス」
ZDNet Japan Green IT
ZDNet Japan ホスティング特集
Techno Exchange