当前位置:首页 > JavaScript

js typeof实现

2026-04-06 13:40:26JavaScript

typeof 操作符的基本用法

在 JavaScript 中,typeof 是一个一元操作符,用于返回一个字符串,表示未经计算的操作数的类型。其语法非常简单:

typeof operand

operand 可以是任意 JavaScript 表达式,包括变量、字面量或函数调用。typeof 操作符会返回以下字符串之一:

  • "undefined"
  • "boolean"
  • "number"
  • "string"
  • "bigint"
  • "symbol"
  • "function"
  • "object"

typeof 的返回值详解

对于不同的数据类型,typeof 返回的结果如下:

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

typeof 的特殊情况

typeof null 返回 "object" 是一个已知的 bug,但由于历史原因无法修复。这是因为在 JavaScript 的早期版本中,值以 32 位存储,最低 3 位用于表示类型标签。null 的二进制表示全为 0,导致 typeof 误判为对象。

typeof null === "object";  // true

实现自定义 typeof

如果需要更精确的类型判断,可以结合 Object.prototype.toString 实现:

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

typeOf(null);      // "null"
typeOf([]);        // "array"
typeOf(new Date);  // "date"

typeof 与未声明变量

typeof 的一个安全特性是,即使变量未声明也不会抛出错误:

typeof undeclaredVar;  // "undefined"

这使得 typeof 成为检查变量是否存在的安全方式。

typeof 的实际应用

typeof 常用于类型检查:

if (typeof variable === "undefined") {
  // 变量未定义
}

if (typeof value === "string") {
  // 处理字符串
}

if (typeof callback === "function") {
  callback();
}

typeof 的局限性

typeof 无法区分数组和普通对象,都会返回 "object"。如果需要更精确的类型判断,应使用 Array.isArray() 或其他方法。

js typeof实现

typeof [];  // "object"
Array.isArray([]);  // true

标签: jstypeof
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js 实现分页

js 实现分页

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

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现祖玛

js实现祖玛

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

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…