2013年1月15日火曜日

JavaScript のデータ型


■JavaScript のデータ型

     弟子:
     他にどんなデータ型があるんですか?

師匠:
基本データ型は意外と少ないよ。
Boolean, Number, String が基本だ。
それとコンテナとなる Object (Array 含む) と Function だ。
特別なものとして Undefined, Null がある。
全部で7種類。

     弟子:
     難しそうなのが出てきた。

師匠:
Boolean は true か false のみ。後は Number と String だよ。
Undefined は未定義の事で、Null は null 値のみを表すんだ。
> typeof true
'boolean'
> typeof false
'boolean'

> typeof undefined
'undefined'
> typeof null
'object'


     弟子:
     null は object って出てますよ。

師匠:
そうだね。Object と Function は重要なので別に話をしよう。
先に全部列挙しておくと組み込みオブジェクトには以下の様なものがある。
- globalオブジェクト
- Objectオブジェクト
- Functionオブジェクト
- Arrayオブジェクト
- Stringオブジェクト
- Booleanオブジェクト
- Numberオブジェクト
- Mathオブジェクト
- Dateオブジェクト
- RegExpオブジェクト
- JSONオブジェクト
- Errorオブジェクト達

     弟子:
     ちょっと多いです。全部覚えられそうにありません。

師匠:
重要なものから徐々に覚えていけば良いよ。

2013年1月14日月曜日

JavaScript の数値と文字列

JavaScript とは何か?

■JavaScript の数値と文字列

師匠:
基本のデータから教えよう。数や文字列からだな。
処理系を開いて以下の様なテキストと Enter を入力してみよう。
便宜上プロンプトとして > が表示されている事と仮定しよう。
Node.js での出力例を使うよ。

> 123
123
> 1.23
1.23
> 'abc'
'abc'
> "abc"
'abc'

弟子:
123 が整数で、1.23 が浮動小数点ですね。
'abc' と "abc" は文字列ですか? 違いがわかりません。

師匠:
データ型は typeof という演算子を使うとわかるんだよ。試してごらん。

弟子:
わかりました。

> typeof 123
'number'
> typeof 1.23
'number'
> typeof 'abc'
'string'
> typeof "abc"
'string'

number と string と出ました。

師匠:
そう。number は数値を表す型で、string は文字列を表す型だよ。
整数と浮動小数点はどちらも同じ数値を表す number という型になるんだ。
文字列はシングルクォートでもダブルクォートでも同じ string 型だ。
では、> typeof typeof 123 はどうなる?

弟子:
string と出ました。文字列ですね。
typeof の結果って型を表す文字列になっているんですね。
面白いですね。

JavaScipt とは何か?


師匠と弟子の会話で進めます。

■JavaScript とは

師匠:
JavaScript って知ってるかな?

弟子:
はい。JavaScirpt はブラウザについてるスクリプト言語ですよね。
結構、いろんな人が使っているので、簡単な言語じゃないですか?

師匠:
そうだな。でも、簡単そうに見えるけど奥は深いんだよ。

弟子:
そうなんですか? 教えてください。

師匠:
JavaScript は、初めは Netscape Navigator 2.0 に LiveScript という名前で搭載され、
Microsoft Internet Explorer 3.0 が真似した事で急速に広がったスクリプト言語だよ。
JavaScript という名前は、Java 言語にあやかって名前が付けられたそうだよ。
様々な方言が出て来ない様に、ECMAScript (ECMA-262, ISO/IEC-16262) として標準化
されてきている。標準化された事で HTML5/CSS3 と共に ECMAScript5 は様々なブラウザ
つまり、Google Chrome, Microsoft Internet Explorer, Mozilla Firefox, Safari など
互換性が非常に高くなってきているんだ。

弟子:
歴史はいいです。中身を教えてくださいよ。

師匠:
なまいきな。まぁ、良いだろう。まずはみんなの知ってる JavaScript を話そう。

弟子:
お願いします。

師匠:
現在の JavaScript はブラウザのリソースであるウィンドウやドキュメントを操作したりする
ために無くてはならない言語になっている。つまりこれがクライアントサイド JavaScript だ。
サーバサイド JavaScript というのもあり、Java JDK にバンドルされている Rhino をはじめ
Google Chrome の JavaScipt エンジン(V8)をベースとした Node.js など、様々なものが出ている。
共通の仕様が ECMAScript つまり JavaScript なので、まずはそこから話そう。

弟子:
なるほど。わかりました。

師匠:
勉強するに当たって試したりするのに処理系を準備しよう。
お勧めは Google Chrome, Mozilla Firefox などブラウザや Node.js だな。
Chrome では、Ctrl+Shift+J で Java Console を表示できる。Firefox では Ctrl+Shift+K だ。
Node.js は、http://nodejs.org/dist/latest/node.exe をダウンロードして実行するだけ良い。
それぞれで違いが出るか確認しながら試して行くのが良いと思うな。
(Node.js の違うバージョンは http://nodejs.org/dist/ を見れば良い)

弟子:
やってみます。