当前位置:首页 > JavaScript

js typeof实现

2026-02-01 20:40:35JavaScript

typeof 的实现原理

JavaScript 中的 typeof 操作符用于检测变量的数据类型。其底层实现基于引擎内部的类型标签机制。在 ECMAScript 规范中,每个值都有一个关联的类型标签,typeof 通过读取这个标签返回对应的类型字符串。

基本数据类型检测

  • undefined: 变量未定义时返回 "undefined"

    typeof undefined; // "undefined"
  • boolean: 布尔值返回 "boolean"

    typeof true; // "boolean"
  • number: 数字类型返回 "number"(包括 NaNInfinity

    typeof 42; // "number"
    typeof NaN; // "number"
  • string: 字符串返回 "string"

    js typeof实现

    typeof "hello"; // "string"
  • symbol: ES6 新增的 Symbol 类型返回 "symbol"

    typeof Symbol(); // "symbol"
  • bigint: BigInt 类型返回 "bigint"

    typeof 9007199254740991n; // "bigint"

复杂数据类型检测

  • function: 函数对象返回 "function"

    js typeof实现

    typeof function() {}; // "function"
  • object: 对象、数组、null 等返回 "object"

    typeof {}; // "object"
    typeof []; // "object"
    typeof null; // "object" (历史遗留问题)

手动实现 typeof

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

function _typeof(obj) {
  return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}

_typeof(null); // "null"
_typeof([]); // "array"

注意事项

typeofnull 的检测结果是历史遗留问题,最初 JavaScript 使用 32 位系统存储值,其中低 3 位表示类型标签。object 的标签是 000,而 null 被表示为全零,因此被错误地归类为 object

对于更精确的类型检测,建议结合使用 typeofinstanceof,或使用 Object.prototype.toString 方法。

标签: jstypeof
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现跑马灯

js实现跑马灯

实现跑马灯效果 使用HTML和JavaScript可以轻松实现跑马灯效果。以下是两种常见的实现方式: HTML结构 <div id="marquee"> <span>…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…