手册

目录

typeof

收藏977

阅读848

更新时间2025-08-07

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;
}
运行实例 »

点击 "运行实例" 按钮查看在线实例

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

实例

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;
}
运行实例 »

点击 "运行实例" 按钮查看在线实例

Undefined

在 JavaScript 中,没有值的变量的值是 undefined。类型也是 undefined

实例

let car;    // 值是 undefined,类型也是 undefined。
运行实例 »

点击 "运行实例" 按钮查看在线实例

通过将其值设置为 undefined,可以清空任何变量。类型也将是 undefined

实例

car = undefined;    // 值是 undefined,类型也是 undefined。
运行实例 »

点击 "运行实例" 按钮查看在线实例

空值

空值与 undefined 无关。

空字符串既有合法值又有类型。

实例

let car = "";    // 值是 "",类型是 "string"
运行实例 »

点击 "运行实例" 按钮查看在线实例

Null

在 JavaScript 中 null 即是“无”。它应该是不存在的东西。

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

你可以认为它是 JavaScript 中的一个 bug,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 的区别

undefinednull 值相等但类型不同:

typeof undefined           // undefined
typeof null                // object

null === undefined         // false
null == undefined          // true
运行实例 »

点击 "运行实例" 按钮查看在线实例

相关

视频

RELATED VIDEOS

更多

免费

Web前端开发极速入门
初级 Web前端开发极速入门

219920次学习

收藏

免费

前端入门_HTML5
初级 前端入门_HTML5

616946次学习

收藏

免费

30分钟学会网站布局
初级 30分钟学会网站布局

238440次学习

收藏

免费

CSS视频教程-玉女心经版
初级 CSS视频教程-玉女心经版

393054次学习

收藏

免费

独孤九贱(1)_HTML5视频教程

免费

独孤九贱(6)_jQuery视频教程

免费

独孤九贱(7)_Bootstrap视频教程

免费

独孤九贱(2)_CSS视频教程
初级 独孤九贱(2)_CSS视频教程

229605次学习

收藏

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.8万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.4万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

71.1万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.7万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

34万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号