js的数据类型有哪些?

在 JavaScript 中,数据类型主要分为两大类:基本数据类型(原始类型)引用数据类型(对象类型)。以下是详细的分类和说明:


一、基本数据类型(Primitive Types)

基本数据类型是按值访问的,存储在栈内存中,不可变(修改时会创建新值)。

  1. Number(数字)
    • 表示整数或浮点数(如 423.14)。
    • 特殊值:Infinity-InfinityNaN(Not a Number)。
    • 示例:
      let age = 25;
      let price = 99.99;
  2. String(字符串)
    • 表示文本数据,用单引号、双引号或反引号包裹。
    • 示例:
      let name = "Alice";
      let message = `Hello, ${name}!`; // 模板字符串
  3. Boolean(布尔值)
    • 只有两个值:true 或 false
    • 示例:let isActive = true;
  4. Undefined(未定义)
    • 表示变量已声明但未赋值。
    • 示例:
      let x;
      console.log(x); // 输出: undefined
  5. Null(空值)
    • 表示“空”或“无值”,是一个显式赋值的空对象指针。
    • 示例:
      let user = null; // 主动设置为空
  6. Symbol(符号)
    • ES6 新增,表示唯一的标识符,常用于对象属性的键。
    • 示例:
      const id = Symbol("id");
      const obj = { [id]: 123 };
  7. BigInt(大整数)
    • ES2020 新增,表示任意精度的整数(后缀 n)。
    • 示例:
      const bigNum = 9007199254740991n;

二、引用数据类型(Reference Types)

引用数据类型存储在堆内存中,变量保存的是内存地址(引用),可变。

  1. Object(对象)
    • 键值对的集合,最基础的对象类型。
    • 示例:
      const person = { name: "Bob", age: 30 };
  2. Array(数组)
    • 有序的元素集合,本质是特殊对象。
    • 示例:
      const fruits = ["apple", "banana"];
  3. Function(函数)
    • 可执行的对象,可接受参数并返回值。
    • 示例:
      function greet() {
      console.log("Hello!");
      }
  4. 其他内置对象
    • 如 Date(日期)、RegExp(正则表达式)、MapSet 等。
    • 示例:

      const now = new Date();

      const regex = /hello/gi;


三、关键区别

特性基本数据类型引用数据类型
存储位置栈内存堆内存(变量保存引用地址)
赋值方式复制值复制引用(共享同一对象)
是否可变不可变(修改会创建新值)可变(直接修改对象属性)
类型检测typeofinstanceof 或 typeof + Array.isArray() 等

四、注意事项

  1. typeof 的特殊情况
    • typeof null 返回 "object"(历史遗留问题)。
    • typeof function 返回 "function"(函数是特殊对象)。
  2. 动态类型
    • JavaScript 是动态类型语言,变量类型可随时改变。
  3. 包装对象
    • 基本类型在需要时会临时转换为对应的包装对象(如 StringNumber),但通常无需手动操作。

总结

  • 基本数据类型NumberStringBooleanUndefinedNullSymbolBigInt
  • 引用数据类型Object 及其子类型(如 ArrayFunction 等)

理解数据类型是掌握 JavaScript 的基础,尤其在内存管理和类型判断时尤为重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值