JavaScript 型変換

❮ 前章へ 次章へ ❯

Number() は Number に、 String() は String に、Boolean() は Boolean に変換します。


JavaScript データ型

JavaScript には、値を格納することのできる5種類のデータ型があります:

3 つのタイプのオブジェクトがあります:

そして、値を格納することのできない2つのデータ型があります:


typeof 演算子

JavaScript 変数のデータ型を調べるには、typeof 演算子を使用することができます。

typeof "John"                 // Returns "string"
typeof 3.14                   // Returns "number"
typeof NaN                    // Returns "number"
typeof false                  // Returns "boolean"
typeof [1,2,3,4]              // Returns "object"
typeof {name:'John', age:34}  // Returns "object"
typeof new Date()             // Returns "object"
typeof function () {}         // Returns "function"
typeof myCar                  // Returns "undefined" *
typeof null                   // Returns "object"
Try it Yourself »

よく見てください:

typeof を使用して、JavaScript オブジェクトが配列(または日付)かどうかを判断することはできません。


typeof のデータ型

typeof 演算子は、変数ではなく演算子です。演算子 ( + - * / ) にはデータ型はありません。

しかし、typeof 演算子は、常にオペランドの型を含む文字列を返します


constructor プロパティ

constructor プロパティは、すべての JavaScript 変数のコンストラクタ関数を返します。

"John".constructor                 // Returns "function String()  { [native code] }"
(3.14).constructor                 // Returns "function Number()  { [native code] }"
false.constructor                  // Returns "function Boolean() { [native code] }"
[1,2,3,4].constructor              // Returns "function Array()   { [native code] }"
{name:'John', age:34}.constructor  // Returns" function Object()  { [native code] }"
new Date().constructor             // Returns "function Date()    { [native code] }"
function () {}.constructor         // Returns "function Function(){ [native code] }"
Try it Yourself »

constructor プロパティをチェックすることで、オブジェクトが Array かどうかを調べることができます("Array" という単語が含まれています):

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}
Try it Yourself »

constructor プロパティをチェックることで、オブジェクトが Date かどうかを調べることができます("Date" という単語が含まれています):

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}
Try it Yourself »

JavaScript 型変換

JavaScript の変数は、次により新しい変数や別のデータ型に変換できます:


数値を文字列に変換する

グローバルメソッド String() は、数値を文字列に変換できます。

これは、あらゆる型の数値、リテラル、変数、または式に使用できます:

String(x)         // returns a string from a number variable x
String(123)       // returns a string from a number literal 123
String(100 + 23)  // returns a string from a number from an expression
Try it Yourself »

Number メソッド toString() は同じことをします。

x.toString()
(123).toString()
(100 + 23).toString()
Try it Yourself »

Number メソッドの章では、数値を文字列に変換するために使用できるメソッドの詳細があります:

メソッド 説明
toExponential() 指数表記を使用して数値を丸めた文字列返します。
toFixed() 指定した桁数の小数点以下を丸めた文字列を返します。
toPrecision() 指定した長さで記述した文字列を返します。

ブール値を文字列に変換する

グローバルメソッド String() は、ブール値を文字列に変換できます。

String(false)        // returns "false"
String(true)         // returns "true"

Boolean ソッド toString() も同じことをします。

false.toString()     // returns "false"
true.toString()      // returns "true"

日付を文字列に変換する

グローバルメソッド String() は、日付を文字列に変換できます。

String(Date())      // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

Date メソッドの toString() も同じことをします。

Date().toString()   // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

Date メソッドの章では、日付を文字列に変換するために使用できるメソッドの詳細があります:

メソッド 説明
getDate() 日を数値で取得する(1-31)
getDay() 曜日を数値で取得する(0〜6)
getFullYear() 4桁の年を取得する(yyyy)
getHours() 時間を取得する(0-23)
getMilliseconds() ミリ秒を取得する(0-999)
getMinutes() 分を取得する(0-59)
getMonth() 月を取得する(0-11)
getSeconds() 秒を取得する(0-59)
getTime() 時間を取得する(1970年1月1日からのミリ秒)

文字列を数値に変換する

グローバルメソッド Number() は、文字列を数値に変換できます。

数値を含む文字列("3.14" など)は、数値(3.14 など)に変換されます。

空の文字列は 0 に変換されます。

それ以外は NaN(数値ではない)に変換されます。

Number("3.14")    // returns 3.14
Number(" ")       // returns 0
Number("")        // returns 0
Number("99 88")   // returns NaN

Number メソッドの章には、文字列を数値に変換するために使用できるメソッドが多数あります:

メソッド 説明
parseFloat() 文字列をパースし、浮動小数点数を返します
parseInt() 文字列をパースし、整数を返します

単項演算子 + 演算子

単項演算子 + 演算子 は、変数を数値に変換するために使用することができます:

var y = "5";      // y is a string
var x = + y;      // x is a number
Try it Yourself »

変数を変換できない場合でも、変数は数値になりますが、値は NaN(数値ではありません)です:

var y = "John";   // y is a string
var x = + y;      // x is a number (NaN)
Try it Yourself »

ブール値を数値に変換する

グローバルメソッド Number() は、ブール値を数値に変換することもできます。

Number(false)     // returns 0
Number(true)      // returns 1

日付を数値に変換する

グローバルメソッド Number() は、日付を数値に変換することもできます。

d = new Date();
Number(d)          // returns 1404568027739

date メソッドの getTime() も同じことをします。

d = new Date();
d.getTime()        // returns 1404568027739

自動型変換

JavaScript は、「間違った」データ型で操作しようとすると、値を「正しい」型に変換しようとします。

結果は、必ずしもあなたが期待するものではありません:

5 + null    // returns 5         because null is converted to 0
"5" + null  // returns "5null"   because null is converted to "null"
"5" + 2     // returns 52        because 2 is converted to "2"
"5" - 2     // returns 3         because "5" is converted to 5
"5" * "2"   // returns 10        because "5" and "2" are converted to 5 and 2
Try it Yourself »

自動文字列変換

オブジェクトや変数を「出力」しようとすると、JavaScript は自動的に変数の toString() 関数を呼び出します:

document.getElementById("demo").innerHTML = myVar;

// if myVar = {name:"Fjohn"}  // toString converts to "[object Object]"
// if myVar = [1,2,3,4]       // toString converts to "1,2,3,4"
// if myVar = new Date()      // toString converts to "Fri Jul 18 2014 09:08:55 GMT+0200"

数値とブール値も変換されますが、これはあまり目にしません:

// if myVar = 123             // toString converts to "123"
// if myVar = true            // toString converts to "true"
// if myVar = false           // toString converts to "false"

JavaScript 型変換テーブル

次の表は、異なる JavaScript 値を Number、String、Boolean に変換した結果を示しています:

Original
Number への
変換
String への
変換
Boolean への
変換
Try it
false 0 "false" false Try it »
true 1 "true" true Try it »
0 0 "0" false Try it »
1 1 "1" true Try it »
"0" 0 "0" true Try it »
"000" 0 "000" true Try it »
"1" 1 "1" true Try it »
NaN NaN "NaN" false Try it »
Infinity Infinity "Infinity" true Try it »
-Infinity -Infinity "-Infinity" true Try it »
"" 0 "" false Try it »
"20" 20 "20" true Try it »
"twenty" NaN "twenty" true Try it »
[ ] 0 "" true Try it »
[20] 20 "20" true Try it »
[10,20] NaN "10,20" true Try it »
["twenty"] NaN "twenty" true Try it »
["ten","twenty"] NaN "ten,twenty" true Try it »
function(){} NaN "function(){}" true Try it »
{ } NaN "[object Object]" true Try it »
null 0 "null" false Try it »
undefined NaN "undefined" false Try it »
赤の値

引用符で囲まれた値は文字列値を表しています。

赤色の値は、(一部の)プログラマが期待していない値を表しています。


❮ 前章へ 次章へ ❯