当前位置:首页 > JavaScript

js typeof实现

2026-03-14 19:56:13JavaScript

typeof 的实现原理

JavaScript 中的 typeof 操作符用于检测变量的数据类型。其底层实现与 JavaScript 引擎的内部类型标签机制相关。具体原理如下:

js typeof实现

  • 在 JavaScript 引擎(如 V8)中,每个值都有一个隐藏的类型标签(通常是一个 1-3 位的二进制值)
  • typeof 通过读取这个标签来判断类型
  • 对于对象类型(包括 null),标签为 0,而 typeof null 返回 "object" 是一个历史遗留的 bug

常见返回值

typeof 可能返回以下字符串:

js typeof实现

typeof 42              // "number"
typeof "hello"         // "string"
typeof true            // "boolean"
typeof undefined       // "undefined"
typeof null            // "object" (历史遗留问题)
typeof {}              // "object"
typeof []              // "object"
typeof function() {}   // "function"
typeof Symbol()        // "symbol"
typeof 123n            // "bigint"

手动实现 typeof

可以通过 Object.prototype.toString 实现更精确的类型判断:

function typeOf(value) {
  return Object.prototype.toString.call(value).slice(8, -1).toLowerCase()
}

typeOf(null)      // "null"
typeOf([])        // "array"
typeOf({})        // "object"
typeOf(new Date)  // "date"

注意事项

  • typeof 对未声明的变量返回 "undefined" 而不会报错
  • 函数虽然是对象,但 typeof 会特殊返回 "function"
  • 数组和普通对象都会返回 "object",需要额外方法区分
  • 在 ES6 中新增了对 SymbolBigInt 类型的支持

标签: jstypeof
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…