Number() は Number に、 String() は String に、Boolean() は Boolean に変換します。
JavaScript には、値を格納することのできる5種類のデータ型があります:
3 つのタイプのオブジェクトがあります:
そして、値を格納することのできない2つのデータ型があります:
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 演算子は、常にオペランドの型を含む文字列を返します。
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 の変数は、次により新しい変数や別のデータ型に変換できます:
グローバルメソッド 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() は同じことをします。
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() | 文字列をパースし、整数を返します |
単項演算子 + 演算子 は、変数を数値に変換するために使用することができます:
変数を変換できない場合でも、変数は数値になりますが、値は NaN(数値ではありません)です:
グローバルメソッド 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 値を 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 » |
引用符で囲まれた値は文字列値を表しています。
赤色の値は、(一部の)プログラマが期待していない値を表しています。