当前位置:首页 > 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 误判为对象。

js 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 的一个安全特性是,即使变量未声明也不会抛出错误:

js 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() 或其他方法。

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

标签: jstypeof
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

实现图片旋转js

实现图片旋转js

使用CSS transform属性旋转图片 通过CSS的transform属性可以轻松实现图片旋转。以下是一个简单的示例代码: const image = document.getElement…