当前位置: 首页 > news >正文

typeof和instanceof区别

typeofinstanceof 是 JavaScript 中用于类型检查的两个运算符,但它们的用途和工作方式有所不同。以下是它们的详细解释和区别:

typeof

  • 用途typeof 运算符用于返回一个表示数据类型的字符串。
  • 语法typeof operand
  • 返回值:返回值是一个字符串,表示操作数的类型。
示例:
console.log(typeof "Hello"); // "string"
console.log(typeof 42);      // "number"
console.log(typeof true);    // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null);     // "object" (这是一个历史遗留问题)
console.log(typeof Symbol());  // "symbol"
console.log(typeof {});       // "object"
console.log(typeof []);       // "object" (数组也是对象)
console.log(typeof function(){}); // "function"

instanceof

  • 用途instanceof 运算符用于检查一个对象是否是某个构造函数的实例。
  • 语法object instanceof constructor
  • 返回值:返回一个布尔值,表示对象是否是构造函数的实例。
示例:
function Person(name) {this.name = name;
}const john = new Person("John");console.log(john instanceof Person); // true
console.log(john instanceof Object);  // true
console.log(john instanceof Array);   // falseconst arr = [];
console.log(arr instanceof Array);    // true
console.log(arr instanceof Object);    // true

主要区别

  1. 用途

    • typeof 用于获取变量的基本数据类型。
    • instanceof 用于检查对象的构造函数类型。
  2. 返回值

    • typeof 返回一个字符串,表示数据类型。
    • instanceof 返回一个布尔值,表示对象是否是某个构造函数的实例。
  3. 适用范围

    • typeof 可以用于所有数据类型,但对于对象(如数组和 null)会返回 “object”。
    • instanceof 主要用于对象,能够区分不同的对象类型(如数组、日期等)。

例子对比

const num = 42;
console.log(typeof num); // "number"
console.log(num instanceof Number); // false (因为 num 是原始类型)const obj = new Number(42);
console.log(typeof obj); // "object"
console.log(obj instanceof Number); // true (因为 obj 是 Number 对象的实例)

总结

  • 使用 typeof 来检查基本数据类型。
  • 使用 instanceof 来检查对象的构造函数类型。

这两者结合使用可以帮助开发者更好地理解和处理 JavaScript 中的类型。

http://www.lryc.cn/news/610433.html

相关文章:

  • Linux学习记录(八)文件共享
  • 认识pytorch与pytorch lightning
  • BackgroundTasks 如何巧妙驾驭多任务并发?
  • 我的创作纪念日____在 CSDN一年来的成长历程和收获
  • openvela之内存管理
  • Linux 磁盘管理与分区配置
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍
  • Field and wave electromagnetics 复习
  • 正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050
  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解