JavaScriptのイロハ:「関数はオブジェクト」って理解できますか?
今回はJavaScriptの「関数はオブジェクトである」という概念について考えてみます。
JavaScriptをより深く知りたい人のための当連載、今回が実質的な二回目です。
前々回のイントロダクション では、「当連載がどういった読者を対象にしているか」「連載の大まかなあらすじ」をお伝えしました。
また前回 は、JavaScriptの現状を知っていただくためにその歴史や業界地図の説明を行いました。
今回からいよいよ、JavaScriptという言語自体にスポットを当てて行きたいと思います。「高度なJavaScriptエンジニアたちは何を理解し、どんなコードを書いているのか」をご理解いただけるよう頑張っていきたいと思います。
今回のお題
JavaScriptプログラマにとって、「関数を定義する」と言えば普通はこのように書きますね。
function a() {
alert("こんちは");
}
しかし、関数定義を次のように書く/書いたことがある、と言う人の数を聞くと、ぐっと絞り込まれてしまうのではないでしょうか。
var a = function () {
alert("こんちは");
};
今回の話題は、これら2つのコードが等価であり、そのことを理解することがJavaScriptを深く学ぶ上での第一歩である、というお話をしたいと思います。
関数はオブジェクトだ
上で述べたことの本質を一言で表すなら、「関数はオブジェクトである」と言うことになります。
JavaScriptにおける「オブジェクト」とは何なのか、については次回詳しくお話します。なので、ここで言うオブジェクトとは「データと振舞いをひとまとまりにしたもの」という程度にとどめておきます。
オブジェクトは、Javaに代表されるオブジェクト指向言語では基本的な単位の一つで、変数に代入したり、メソッドの引数/戻り値に使用することもできます。
そしてJavaScriptでは「関数もオブジェクト」なので、関数に対してそうした操作 (代入や引数、戻り値など) を行うことが可能です。以下でそれを試していきましょう。
- 特集: JavaScriptのイロハ (16件)
- 今日のトップ記事
- 2日前
- 3日前
- 4日前
- 5日前
- ホワイトペーパー
- 話題のタグ
現場の知見から得られるノウハウを共有しましょう
新APIまもなく登場--Google Developer Day 2008の見所とは?
仮想化によるコスト削減を見える化:オンラインTCOカリキュレータ
Firefox 3が対応したdisplayプロパティの値(2)
Ruby・Python・JavaScript・PHPについてどう思いますか?:Tim Brayに聞いてみた
来日したゲイツ氏が経団連で行ったスピーチ全文
グリーンITと「幼年期の終わり」
Web開発者向けツール Opera Dragonflyのアルファ版が登場
あなたがプログラムを理解できない10の理由:第1回
Rubyでどう書く?:RubyでPDF履歴書を作成する
Neil YoungがJavaOneにやってきた
オンラインマーケティングの最重要課題
内部統制対策を実現するIT運用管理ツール
-Simplify IT- ITをシンプルに 連載第2回