JavaScript 类型変換

Number() 数値への変換String() 文字列への変換Boolean() ブール値の変換

JavaScriptのデータ型

JavaScriptには値を含めることができるデータ型が以下の通りです:

  • 文字列(string)
  • 数値(number)
  • ブール(boolean)
  • オブジェクト(object)
  • 関数(function)

オブジェクトの種類は以下の通りです:

  • オブジェクト(Object)
  • 日付(Date)
  • 配列(Array)

値を含めないデータ型が二種類あります:

  • null
  • undefined

typeof 演算子を使用できます

あなたは typeof 演算子を使用して JavaScript 変数のデータ型を決定します。

typeof "Bill"                 // 返回 "string"
typeof 3.14                   // 返回 "number"
typeof NaN                    // 返回 "number"
typeof false                  // 返回 "boolean"
typeof [1,2,3,4]              // 返回 "object"
typeof {name:'Bill', age:62}  // 返回 "object"
typeof new Date()             // 返回 "object"
typeof function () {}         // 返回 "function"
typeof myCar                  // 返回 "undefined" *
typeof null                   // 返回 "object"

自分で試してみてください

注意してください:

  • NaNのデータ型は数値です
  • 配列のデータ型はオブジェクトです
  • 日付のデータ型はオブジェクトです
  • nullのデータ型はオブジェクトです
  • 未定義の変数のデータ型も undefined
  • 未設定の変数のデータ型も undefined

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

typeofのデータ型

typeof 運算子は変数ではありません。それは演算子です。例えば、 + - * /)没有数据类型。

但是,typeof 始终会返回字符串(包含运算数的类型)。

constructor 属性

constructor 属性返回所有 JavaScript 变量的构造器函数。

"Bill".constructor                 // 返回 "function String()  { [native code] }"
(3.14).constructor                 // 返回 "function Number()  { [native code] }"
false.constructor                  // 返回 "function Boolean() { [native code] }"
[1,2,3,4].constructor              // 返回 "function Array()   { [native code] }"
{name:'Bill', age:62}.constructor  // 返回" function Object()  { [native code] }"
new Date().constructor             // 返却値 "function Date()    { [native code] }"
function () {}.constructor         // 返却値 "function Function(){ [native code] }"

自分で試してみてください

次のように確認できます: constructor 属性を使用して、あるオブジェクトが配列("Array"という単語を含む)であるかどうかを確認します:

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

自分で試してみてください

またはもっと簡単に、オブジェクトが配列関数であるかどうかを確認できます:

function isArray(myArray) {
    return myArray.constructor === Array;
}

自分で試してみてください

次のように確認できます: constructor 属性を使用して、あるオブジェクトが日付("Date"という単語を含む)であるかどうかを確認します:

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

自分で試してみてください

またはもっと簡単に、オブジェクトが日付関数であるかどうかを確認できます:

function isDate(myDate) {
    return myDate.constructor === Date;
}

自分で試してみてください

JavaScript 类型変換

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

  • JavaScript 関数を使用して
  • JavaScript 自体を通じて自動変換

数値を文字列に変換します

グローバルメソッド String() 数字を文字列に変換する機能があります。

これは任意の型の数字、文字、変数または式に使用できます:

String(x)         // 数値変数 x から文字列を返します
String(123)       // 数値テキスト 123 から文字列を返します
String(100 + 23)  // 式の数値から文字列を返します

自分で試してみてください

数値メソッド toString() 同様に。

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

自分で試してみてください

次の例では、数値メソッドこの章では、数値を文字列に変換する方法としてさらに多くの方法を学びます:

メソッド 説明
toExponential() 文字列を返します。数字を四捨五入し、指数記数法を使用して書きます。
toFixed() 文字列を返します。数字を四捨五入し、指定された桁数の小数を使用して書きます。
toPrecision() 文字列を返します。数字を指定された長さに書きます。

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

グローバルメソッド String() ブールを文字列に変換することができます。

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

ブールメソッド toString() 同様に。

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

日付を文字列に変換する

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

String(Date())      

日付メソッド toString() 同様に。

Date().toString()   

次の例では、日付メソッドこの章では、日付を文字列に変換するためのさらに多くのメソッドを見つけることができます:

メソッド 説明
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")    // 3.14 を返します
Number(" ")       // 0 を返します
Number("")        // 0 を返します
Number("99 88")   // NaN を返します

次の例では、数値メソッドこの章では、文字列を数値に変換するためのさらに多くのメソッドを見つけることができます:

メソッド 説明
parseFloat() 文字列を解析して浮動小数点数を返します。
parseInt() 文字列を解析して整数を返します。

一元 + 演算子

一元的 + 演算子変数を数値に変換するために使用できる:

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

自分で試してみてください

変数を変換できなかった場合でも、値は NaN(数値ではありません):

var y = "Bill";   // y は文字列
var x = + y;      // x は数字 (NaN)

自分で試してみてください

ブールを数値に変換

グローバルメソッド Number() ブールも数字に変換できます。

Number(false)     // 返回 0
Number(true)      // 返回 1

日付を数字に変換

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

d = new Date();
Number(d)          

日付メソッド getTime() 同様に。

d = new Date();
d.getTime()        

自動的な型変換

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;
// myVar = {name:"Fjohn"} 的情况下  // toString 轉換して "[object Object]"
// myVar = [1,2,3,4] 的情况下       // toString 轉換して "1,2,3,4"
// myVar = new Date() 的情况下      // toString 轉換して ""

数字やブールも変換されるが、明確ではありません:

// myVar = 123 的情况下             // toString 轉換して "123"
// myVar = true 的情况下            // toString 轉換して "true"
// 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 試してみてください

引用符内の値は文字列値を示しています。

赤い値プログラマーが望まない値を示しています。