typeof对原始类型的返回值确定:undefined→"undefined"、null→"object"(历史bug)、boolean→"boolean"、number→"number"、string→"string"、symbol→"symbol"、bigint→"bigint";判断null需用===,对象类型需结合Array.isArray()等进一步识别。
typeof
是 JavaScript 中用于检测值类型的运算符,它对原始类型(primitive types)的返回结果是确定且固定的。理解这些结果有助于避免类型判断中的常见误区。
原始类型对应的 typeof 结果
JavaScript 有 7 种原始类型(ES2020 新增
),
typeof
对它们的返回值如下:
→
→
(这是历史遗留 bug,但已成标准,需特别注意)
→
→
→
→
→
为什么 typeof null 返回 "object"
这源于 JavaScript 最初实现时的底层设计:null 被表示为全零的机器码,与对象指针的空值形式一致,因此被错误归类为 object。尽管 ECMAScript 规范早已明确 null 是独立原始类型,但为保持兼容性,
typeof null
仍返回
。
若需准确判断 null,应显式使用严格相等:
。
立即学习
“
Java免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
typeof 对非原始值的行为补充说明
虽然问题聚焦原始类型,但实际使用中容易混淆,需留意:
函数(
)→
(函数在 JS 中是对象的子类型,但
typeof
单独识别)
普通对象、数组、正则、日期等 → 全部返回
箭头函数、class 声明的构造函数 → 同样返回
变量或未声明标识符 →
(不会报错)
实用建议:安全检测原始类型
仅靠
typeof
不足以区分所有类型(如数组 vs 普通对象)。若需精准识别原始类型,可组合使用:
先用
typeof
排除对象和函数
再用
单独判断 null
对
结果,配合
或
进一步识别
例如判断是否为字符串原始值:
(更稳妥写法是
,因字符串字面量必为原始值)。
bigintundefined"undefined"null"object"boolean"boolean"number"number"string"string"symbol"symbol"bigint"bigint""object"value === nullfunction"function""object""function"undefined"undefined"=== null"object"Array.isArray()Object.prototype.toString.call()typeof value === "string" && value.constructor === Stringtypeof value === "string"