目录

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的数据类型是object
  • 未定义变量的数据类型是不明确的*
  • 未赋值的变量的数据类型也是不明确的*

你不能使用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运算符可以返回两种复杂类型之一:

  • function
  • object

这个typeof对于对象、数组和 null,运算符返回 "object"。

这个typeof对于函数,运算符不会返回 "object"。

示例

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"
亲自试一试 »

这个typeof运算符返回“object" 对于数组,因为在 JavaScript 中数组是对象。


typeof 的数据类型

这个typeof运算符不是变量。它是一个运算符。运算符 ( + - * / ) 没有任何数据类型。

但是,typeof运算符总是返回一个字符串(包含操作数的类型)。


构造函数属性

这个constructorproperty 返回所有 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(包含单词"Array"):

示例

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

亲自试一试 »

或者更简单,您可以检查该对象是否是数组函数

示例

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

亲自试一试 »

您可以检查构造函数属性来确定对象是否是Date(包含单词"Date"):

示例

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

亲自试一试 »

或者更简单,您可以检查该对象是否是日期功能

示例

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"
亲自试一试 »

无效的

在 JavaScript 中null是"nothing"。它应该是不存在的东西。

不幸的是,在 JavaScript 中,数据类型null是一个对象。

您可以将其视为 JavaScript 中的一个错误typeof null是一个对象。它应该是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
亲自试一试 »

未定义和空之间的区别

undefinednull值相同但类型不同:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true
亲自试一试 »

运算符的实例

这个instanceof运算符返回true如果一个对象是指定对象的实例:

示例

const cars = ["Saab", "Volvo", "BMW"];

(cars instanceof Array);
(cars instanceof Object);
(cars instanceof String);
(cars instanceof Number);
亲自试一试 »

虚空运算符

这个空白运算符计算表达式并返回不明确的。此运算符通常用于获取未定义的原始值,使用"void(0)"(在不使用返回值计算表达式时很有用)。

示例

<a href="javascript:void(0);">
  Useless link
</a>

<a href="javascript:void(document.body.style.backgroundColor='red');">
  Click me to change the background color of body to red
</a>
亲自试一试 »