JavaScript typeof
JavaScriptには、値を含めることができる5つの異なるデータ型があります。
string
number
boolean
object
function
オブジェクトには6つのタイプがあります。
Object
Date
Array
String
Number
Boolean
そして、値を含めることができない2つのデータ型:
null
undefined
演算子のタイプ
演算子を使用してtypeof
、JavaScript変数のデータ型を見つけることができます。
例
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"
以下を遵守してください:
- NaNのデータ型は数値です
- 配列のデータ型はオブジェクトです
- 日付のデータ型はオブジェクトです
- nullのデータ型はオブジェクトです
- 未定義の変数のデータ型は未定義です *
- 値が割り当てられていない変数のデータ型も未定義です*
typeof
JavaScriptオブジェクトが配列(または日付)であるかどうかを判別するために使用することはできません。
プリミティブデータ
プリミティブデータ値は、追加のプロパティやメソッドを含まない単一の単純なデータ値です。
typeof
演算子は、次のプリミティブ型のいずれかを返すことができます。
string
number
boolean
undefined
例
typeof "John" // Returns
"string"
typeof 3.14 // Returns
"number"
typeof true // Returns
"boolean"
typeof false // Returns
"boolean"
typeof x
// Returns "undefined" (if x has no value)
複雑なデータ
演算子は、typeof
次の2つの複合型のいずれかを返すことができます。
function
object
演算子は、typeof
オブジェクト、配列、およびnullに対して「object」を返します。
演算子は関数のtypeof
「オブジェクト」を返しません。
例
typeof {name:'John', age:34} // Returns "object"
typeof [1,2,3,4]
// Returns "object" (not "array", see note below)
typeof null // Returns
"object"
typeof function myFunc(){} // Returns "function"
JavaScriptでは配列はオブジェクトであるため、演算子は配列に対して「」を返しtypeof
ます。object
typeofのデータ型
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]}
コンストラクタープロパティをチェックして、オブジェクトがArray
(「配列」という単語を含む)であるかどうかを確認できます。
例
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
または、さらに簡単に、オブジェクトが配列関数であるかどうかを確認できます。
例
function isArray(myArray) {
return myArray.constructor
=== Array;
}
コンストラクタープロパティをチェックして、オブジェクトが
Date
(「日付」という単語を含む)であるかどうかを確認できます。
例
function isDate(myDate) {
return myDate.constructor.toString().indexOf("Date") > -1;
}
または、さらに簡単に、オブジェクトがDate関数であるかどうかを確認できます。
例
function isDate(myDate) {
return myDate.constructor === Date;
}
未定義
JavaScriptでは、値のない変数の値はですundefined
。タイプもundefined
です。
例
let car; // Value is undefined,
type is undefined
値をに設定することにより、任意の変数を空にすることができますundefined
。タイプもになりますundefined
。
例
car = undefined; // Value is undefined,
type is undefined
空の値
空の値は。とは何の関係もありませんundefined
。
空の文字列には、有効な値と型の両方があります。
例
let car = ""; //
The value is
"", the typeof is "string"
ヌル
JavaScriptnull
では「何もない」です。存在しないもののはずです。
残念ながら、JavaScriptでは、のデータ型null
はオブジェクトです。
typeof null
オブジェクトであるJavaScriptのバグと見なすことができます。する必要がありますnull
。
次のように設定すると、オブジェクトを空にできますnull
。
例
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = null; //
Now value is null,
but type is still an object
次のように設定して、オブジェクトを空にすることもできますundefined
。
例
let person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"};
person = undefined; //
Now both value and type is undefined
UndefinedとNullの違い
undefined
とnull
値は同じですが、タイプが異なります。
typeof undefined
// undefined
typeof null
// object
null === undefined
// false
null == undefined
// true