JavaScript typeof

JavaScript typeof

JavaScriptには値を含むことができる5種類の異なるデータ型があります:

  • string
  • number
  • boolean
  • object
  • function

以下の6種類のオブジェクトがあります:

  • Object
  • Date
  • Array
  • String
  • Number
  • Boolean

および、値を含むことができない2種類のデータ型があります:

  • 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:19}  // 返却値 "object"
typeof new Date()             // 返却値 "object"
typeof function () {}         // 返却値 "function"
typeof myCar                  // 返却値 "undefined" *
typeof null                   // 返却値 "object"

自分で試してみる

注意してください:

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

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

原始日付

原始データ値とは、属性やメソッドが付加されていない単純なデータ値を指します。

typeof 演算子は以下のいずれかの原始データ型を返します:

  • string
  • number
  • boolean
  • undefined

typeof "Bill"              // 返回 "string"
typeof 3.14                // 返回 "number"
typeof true                // 返回 "boolean"
typeof false               // 返回 "boolean"
typeof x                   // 返回 "undefined" (if x has no value)

自分で試してみる

复杂数据

typeof 运算符可以返回两种复杂类型之一:

  • function
  • object

typeof 运算符会为对象、数组和 null 返回 "object"。

typeof 运算符不会为函数返回 "object"。

typeof {name:'Bill', age:19} // 返回 "object"
typeof [1,2,3,4]             // 返回 "object"(非 "array",请注意下面的例子)
typeof null                  // 返回 "object"
typeof function myFunc(){}   // 返回 "function"

自分で試してみる

typeof 运算符会为数组返回 "object",因为在 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:19}.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;
}

自分で試してみる

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

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

自分で試してみる

オブジェクトが日付であるかどうかを確認するために、constructor属性をチェックできます(以下を含む): "Date" (以下の単語):

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

自分で試してみる

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

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

自分で試してみる

Undefined

JavaScriptでは、値を持たない変数の値は undefinedです。データ型も undefined

let car;    // 値は undefined、データ型も undefined。

自分で試してみる

を設定することで、 undefinedを設定することで、どんな変数も空にできます。データ型も undefined

car = undefined;    // 値は undefined、データ型も undefined。

自分で試してみる

空値

空値と undefined 関係ありません。

空文字列には合法な値とデータ型があります。

let car = "";    // 値は ""、データ型は "string"

自分で試してみる

Null

JavaScriptでは、 null 「無」です。存在しないものです。

残念ながら、JavaScriptでは、null データ型はオブジェクトです。

これは JavaScript のバグの一つと考えられます。typeof null これはオブジェクトです。タイプは null

オブジェクトを設定することで: null オブジェクトをクリアする方法:

let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = null;    // 現在の値は null ですが、タイプはまだオブジェクトです

自分で試してみる

オブジェクトを設定することで: undefined オブジェクトをクリアする方法:

let person = {firstName:"Bill", lastName:"Gates", age:19, eyeColor:"blue"};
person = undefined;   // 現在の値とタイプはどちらも未定義

自分で試してみる

undefined と null の違い

undefined および null 値が等しいがタイプが異なる:

typeof undefined           // undefined
typeof null                // object
null === undefined         // false
null == undefined          // true

自分で試してみる