跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

JavaScript中typeof操作符对原始类型的检测结果

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

相关文章