JavaScript 入門 | 型 | 型変換 (Type conversion)

型変換 (type conversion)

JavaScript は型チェックが非常に柔軟な言語である。
JavaScript の変数には型が固定されておらず、同じ変数に別の型の値を再び代入することもできる。

var num = 20; // Number 型の 20
num = "二十"; // String 型の "二十"
var num;      // 1 つの変数に何度も代入できるが、変数の再宣言は無視される。

暗黙的な型変換 (implicit type conversion)

JavaScript は特定の型の値を期待する場所に別の型の値が来ると、自動的に型を変換して使用する。
つまり、文字列値が期待される場所に数値が来ても、JavaScript は自動的に数値を文字列へ変換して使用する。

10 + "文字列"; // 文字列連結のために数値 10 が文字列へ変換される。
"3" * "5";     // 乗算のために 2 つの文字列がどちらも数値へ変換される。
1 - "文字列";  // NaN

上の 3 番目の例では、減算のために文字列を数値へ変換する必要があるが、その文字列は 2 番目の例の文字列とは異なり、数値へ変換できない文字列である。
したがって、意味に合う形で自動的に型を変換できないため、JavaScript は NaN 値を返す。

NaN は Not a Number の略で、定義されていない値や表現できない値という意味を持つ。
NaN は Number 型の読み取り専用値であり、0 を 0 で割った場合や、数値へ変換できないオペランドで算術演算を試みた場合に返される。

明示的な型変換 (explicit type conversion)

JavaScript では暗黙的な型変換が多く使われるが、明示的に型を変換する方法も提供されている。
明示的な型変換のために JavaScript が提供するグローバル関数は次のとおりである。

  1. Number()
  2. String()
  3. Boolean()
  4. Object()
  5. parseInt()
  6. parseFloat()
Number("10"); // 数値 10
String(true); // 文字列 "true"
Boolean(0);   // boolean false
Object(3);    // new Number(3) と同じ結果である数値 3

数値を文字列へ変換

数値を文字列へ変換する最も簡単な方法は、String() 関数を使用することである。 また、null と undefined を除くすべての型の値が持つ toString() メソッドも使用できる。

Number オブジェクトは、数値を文字列へ変換する次のようなメソッドを別途提供する。

  1. toExponential()
  2. toFixed()
  3. toPrecision()
メソッド 説明
toExponential() 整数部分は 1 桁、小数部分は指定された桁数を使い、e 表記法で数値を文字列へ変換する。
toFixed() 小数部分を指定された桁数だけ使い、数値を文字列へ変換する。
toPrecision() 指定された有効桁数を使い、数値を文字列へ変換する。

メソッド (method) とは、オブジェクトのプロパティ値として関数を持つプロパティを意味する。

真偽値を文字列へ変換

真偽値を文字列へ変換する方法には、String() 関数と toString() メソッドを使用する方法がある。

String(true);     // 文字列 "true"
false.toString(); // 文字列 "false"

日付を文字列または数値へ変換

日付を文字列へ変換する方法には、String() 関数と toString() メソッドを使用する方法がある。 JavaScript で Date オブジェクトは、文字列と数値のどちらにも変換できる唯一の型である。

Date オブジェクトは、日付を数値へ変換する次のようなメソッドを別途提供する。

  1. getDate()
  2. getDay()
  3. getFullYear()
  4. getMonth()
  5. getTime()
  6. getHours()
  7. getMinutes()
  8. getSeconds()
  9. getMilliseconds()
メソッド 説明
getDate() 日付のうち日を数値で返す。(1 ~ 31)
getDay() 日付のうち曜日を数値で返す。(日曜日: 0 ~ 土曜日: 6)
getFullYear() 日付のうち年を 4 桁の数値で返す。
getMonth() 日付のうち月を数値で返す。(1 月: 0 ~ 12 月: 11)
getTime() 1970 年 1 月 1 日から現在までの時間をミリ秒単位の数値で返す。
getHours() 時刻のうち時を数値で返す。(0 ~ 23)
getMinutes() 時刻のうち分を数値で返す。(0 ~ 59)
getSeconds() 時刻のうち秒を数値で返す。(0 ~ 59)
getMilliseconds() 時刻のうち秒をミリ秒単位の数値で返す。(0 ~ 999)
String(Date());        // Mon May 16 2016 19:35:25 GMT+0900
Date().toString();     // Mon May 16 2016 19:35:25 GMT+0900
var date = new Date(); // Date オブジェクトの作成
date.getFullYear();    // 2016
date.getTime();        // 1463394925632 -> 1970 年 1 月 1 日から現在までの時間をミリ秒単位の数値で返す。

文字列を数値へ変換

文字列を数値へ変換する最も簡単な方法は、Number() 関数を使用することである。

JavaScript は文字列を数値へ変換する 2 つのグローバル関数を別途提供する。

  1. parseInt()
  2. parseFloat()
メソッド 説明
parseInt() 文字列を解析し、特定の基数の整数を返す。
parseFloat() 文字列を解析し、浮動小数点数を返す。

真偽値を数値へ変換

真偽値を数値へ変換する方法には、Number() 関数を使用する方法がある。

Number(true);  // 数値 1
Number(false); // 数値 0