当前位置:首页 > 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"

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

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

    typeof 9007199254740991n; // "bigint"

复杂数据类型检测

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

    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

js typeof实现

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

标签: jstypeof
分享给朋友:

相关文章

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…