JavaScript 型変換

文字列から数値への変換

グローバルメソッドNumber()は、変数(または値)を数値に変換します。

  • 数値の文字列(例:”3.14″)は数値に変換されます(例:3.14)。
  • 空の文字列(例:””)は0に変換されます。
  • 数値でない文字列(例:”John”)はNaN(数値でないことを表す値)に変換されます。


Number("3.14")
Number(Math.PI)
Number(" ")
Number("")

これらは変換されますが:


Number("99 88")
Number("John")

メソッド

Number Methods章では、文字列を数値に変換するための他のメソッドも紹介されています:

メソッド 説明
Number() 引数を数値に変換して返す
parseFloat() 文字列を解析して浮動小数点数を返す
parseInt() 文字列を解析して整数を返す

単項+演算子

単項+演算子は変数を数値に変換するために使用できます。


let y = "5";      // yは文字列
let x = + y;      // xは数値

変数を変換できない場合、値はNaN(数値でないことを表す特別な値)になります:


let y = "John";   // yは文字列
let x = + y;      // xは数値(NaN)

数値から文字列への変換

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

リテラル、変数、または式で使用できます。


String(x)         // 数値変数xを文字列に変換
String(123)       // 数値リテラル123を文字列に変換
String(100 + 23)  // 式からの数値を文字列に変換

NumberメソッドのtoString()も同様のことができます。


x.toString()
(123).toString()
(100 + 23).toString()

メソッド

Number Methods章では、数値を文字列に変換するための他のメソッドも紹介されています:

メソッド 説明
toExponential() 数値を指数表記で文字列に変換して返す
toFixed() 数値を指定した小数点以下の桁数で文字列に変換して返す
toPrecision() 数値を指定した長さで文字列に変換して返す

日付から数値への変換

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


let d = new Date();
Number(d)          // 数値に変換して返す

日付メソッドgetTime()も同様のことができます。


let d = new Date();
d.getTime()        // 数値に変換して返す

日付から文字列への変換

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


String(Date())  // 文字列に変換して返す

DateメソッドのtoString()も同様のことができます。


Date().toString()  // 文字列に変換して返す

メソッド

Date Methods章では、日付を文字列に変換するための他のメソッドも紹介されています:

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

ブーリアンから数値への変換

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


Number(false)     // 0を返す
Number(true)      // 1を返す

ブーリアンから文字列への変換

グローバルメソッドString()はブーリアンを文字列に変換します。


String(false)      // "false"を返す
String(true)       // "true"を返す

BooleanメソッドのtoString()も同様のことができます。


false.toString()   // "false"を返す
true.toString()    // "true"を返す

自動型変換

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

結果は常に予想どおりではありません:


5 + null    // 5を返す、nullが0に変換されるため
"5" + null  // "5null"を返す、nullが文字列"null"に変換されるため
"5" + 2     // "52"を返す、2が文字列"2"に変換されるため
"5" - 2     // 3を返す、"5"が数値5に変換されるため
"5" * "2"   // 10を返す、"5"と"2"が数値5と2に変換されるため

自動文字列変換

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


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

// if myVar = {name:"Fjohn"}  // toStringは"[object Object]"に変換されます
// if myVar = [1,2,3,4]       // toStringは"1,2,3,4"に変換されます
// if myVar = new Date()      // toStringは"Fri Jul 18 2014 09:08:55 GMT+0200"に変換されます

数値とブーリアンも変換されますが、これはあまり目立たないです:


// if myVar = 123             // toStringは"123"に変換されます
// if myVar = true            // toStringは"true"に変換されます
// if myVar = false           // toStringは"false"に変換されます

JavaScript型変換表

この表は、さまざまなJavaScriptの値を数値、文字列、ブーリアンに変換した結果を示しています:

元の値 数値に変換 文字列に変換 ブーリアンに変換
false 0 “false” false
true 1 “true” true
0 0 “0” false
1 1 “1” true
“0” 0 “0” true
“000” 0 “000” true
“1” 1 “1” true
NaN NaN “NaN” false
Infinity Infinity “Infinity” true
-Infinity -Infinity “-Infinity” true
“” 0 “” false
“20” 20 “20” true
“twenty” NaN “twenty” true
[] 0 “” true
[20] 20 “20” true
[10,20] NaN “10,20” true
[“twenty”] NaN “twenty” true
[“ten”,”twenty”] NaN “ten,twenty” true
function(){} NaN “function(){}” true
{} NaN “[object Object]” true
null 0 “null” false
undefined NaN “undefined” false