如何通过 typeof 操作符精准判断变量的原始类型?

风芳姑娘_6720

风芳姑娘_6720

2026-06-08

670人浏览

原创

typeof 能准确识别 string、number、boolean、undefined、symbol、bigint 六种原始类型,但对 null 返回 "object" 属历史 bug,需用 === null 单独判断;对函数返回 "function",可安全用于函数检测,但无法区分数组等对象子类型。

如何通过 typeof 操作符精准判断变量的原始类型?

typeof 能准确识别 JavaScript 中的原始类型(primitive types),但有几点关键限制必须清楚——它对 null 返回 "object",对函数返回 "function"(虽属原始类型分类中的特例),其余原始类型(string、number、boolean、undefined、symbol、bigint)则返回对应小写字符串。

能直接靠 typeof 准确判断的原始类型

以下六种原始类型用 typeof 判断是可靠且推荐的:

  • typeof "hello" → "string"
  • typeof 42 → "number"(包括 NaN 和 Infinity)
  • typeof true → "boolean"
  • typeof undefined → "undefined"(注意:未声明变量用 typeof 不报错)
  • typeof Symbol("id") → "symbol"
  • typeof 123n → "bigint"(需确保运行环境支持 BigInt)

typeof 对 null 的误判必须单独处理

null 是原始值,但 typeof null 返回 "object",这是历史遗留 bug。不能依赖它判断是否为 null:

  • ❌ typeof null === "object" —— 结果为 true,但语义错误
  • ✅ 正确方式:value === null 或 Object.is(value, null)
  • 若需统一检测“空值”,可组合:value === null || typeof value === "undefined"

区分 function 和普通对象要留意返回值

typeof 对函数返回 "function",这在实践中很有用;但要注意它不适用于箭头函数以外的“类函数对象”(如 DOM 元素方法):

javascript-pro
javascript-pro

专注现代 ECMAScript、异步编程、性能优化和全栈的 JavaScript 专家,适用于现代开发

下载
  • typeof function(){} → "function"
  • typeof () =>{} → "function"
  • typeof {} → "object"
  • typeof [] → "object"(数组不是原始类型,typeof 不适用)

所以,typeof 可安全用于判断“是不是函数”,但不能用来区分数组、正则、日期等对象类型——那些需用 Object.prototype.toString.call()。

实际使用建议:优先用 typeof 做轻量预检

在日常开发中,typeof 最适合做快速类型守卫,尤其配合逻辑运算符:

  • 检查变量是否已定义且为字符串:typeof str === "string" && str.length > 0
  • 安全读取可能为 undefined 的属性:typeof obj?.method === "function" && obj.method()
  • 避免对非数字执行算术:typeof input === "number" && !isNaN(input)

遇到 null 或需要精确对象子类型时,再叠加其他手段。不复杂但容易忽略。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.31

2811

5

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

2025.10.31

534

9

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

2026.02.12

482

19

JavaScript中的typeof用法
JavaScript中的typeof用法

在JavaScript中,typeof是一个用来确定给定变量的数据类型的操作符。可以用来确定一个变量是字符串、数字、布尔值、函数、对象或undefined的数据类型。更多关于typeof用法相关文章,详情请看本专题下面的文章,php中文网欢迎大家前来学习。

2023.11.23

7827

13

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

2026.10.10

80

15

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

2026.10.10

40

15

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

2026.10.10

20

15

C++虚函数怎么定义和调用
C++虚函数怎么定义和调用

C++虚函数是实现运行时多态的重要机制。本专题从virtual关键字的基本用法入手,介绍基类与派生类之间的函数重写、基类指针调用派生类方法,以及动态绑定的执行过程,帮助初学者掌握虚函数的核心语法。

2026.10.10

20

26

C++类与对象的封装方法教程
C++类与对象的封装方法教程

C++封装是面向对象编程的核心特性之一,通过类将数据与操作数据的函数组织在一起,并利用访问权限控制外部访问。本专题介绍类的定义、成员变量、成员函数以及public、private和protected的使用方法,帮助初学者掌握封装的基本原理。

2026.10.10

20

32

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.2万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.6万人学习