DATE : 2006/07/02 (Sun)
JavaScript のデータ型
JavaScript には、以下のデータ型があります。
- String 型
文字列を表す型です。以下のように、「"」や「'」で囲むことで 文字列を生成できます。
var s = "string"
ちなみに、1つの文字は符号なし16ビット整数で表されます。
文字エンコーディングは UTF-16 です。
初めの文字から、0, 1, 2, ... とインデックスが割り振られます。
- Number 型
数値を表す型です。
64ビットの浮動小数点数(IEEE 754)で表されます。
表現できる値の範囲は、±2の56乗です。
整数と浮動小数点の区別はされません。
演算の結果、数値で表現できなくなった場合の値として「NaN」値があります。NaN 値は通常、比較できません。NaN 値どうかを確かめるには、isNaN 関数を使用します。
- Boolean 型
真偽値を表す型です。
「true」または「false」の値をとります。前者が真、後者が偽です。
- Object 型
オブジェクトを表す型です。オブジェクトは、プロパティの組から成っています。
- Undefined 型
undefined を表す型です。未初期化の変数には、 undefined が格納されています。
- Null 型
null を表す型です。
この他にも、ECMAScript の仕様には Reference 型や List 型、Completion 型があります。ただし、これらの型は式の中間評価でのみ用いられ、変数には格納できないデータ型なので、ここでは省略します。
ちなみに、JavaScript の変数はどのような型でも受け付けます。つまり、上記で示した型の値を、自由に変数へ代入することができます。
var a;
a = 1;
a = "abc"
a = false;
a = null;
型変換
JavaScript では、演算子など、場合に応じてデータ型を自動的に変換します。
例えば、次のコードでは、String 型と Number 型を減算していますが、正しく計算が行われます。
4 - "4"
しかし、場合によっては、型を手動で変換しておきたい場合もあります。
例えば、「+」演算子は、数の加算だけでなく、文字列の結合も行います。そのため、データ型によって動作が異なってしまいます。
次のコードは Number 型同士の加算のため7という結果になります。
3 + 4
しかし、どちらかの項が String 型の場合は、文字列の結合が行われてしまいます。
3 + "4"
結果は、「34」となります。
上の例を、数として計算にするには、String 型を Number 型に変換しなければなりません。
変換を行うには、以下のようにします。
3 + Number("4")
型変換の概要を以下に示します。
なお、例のコード中に出てくる「===」は、両端のデータ型が同じで、かつ値も等しいことを示します。
- String 型への変換
そのデータを表現する文字列に変換します。例えば、Null 型は「"null"」になりますし、「34」や「false」は「"34"」や「"false"」になります。
例:
String(4) === "4"
String(true) === "true"
String(null) === "null"
String(undefined) === "undefined"- Number 型への変換
String 型の場合、数字と判断できる場合はその数字に、数字と判断できない場合は NaN になります。(具体的なルールは、省略します)
Undefined 型は NaN 、Null 型は0になります。
そして、Boolean 型は、true が1、false が0になります。
例:
String("45") === 45
isNaN( String("number") ) === true
String("true") === 1
String("false") === 0
String(null) === 0
isNaN( String(undefined) ) === trueここで出てくる isNaN 関数は、引数の値が NaN かどうかを調べる関数です。
- Boolean 型への変換
Number 型の場合、0は false 、それ以外は true になります。
Undefined 型、Null 型はともに false になります。
String 型の場合、文字列の長さが0の場合のみ false となります。それ以外は全て true です。つまり、Boolean 型を String 型に変換した値を再び Boolean 型に変換しようとしても、true になります。
例:
Boolean(0) === false
Boolean(1) === true
Boolean(-1) === true
Boolean("") === false
Boolean("false") === true
Boolean(undefined) === false
Boolean(null) === false