JavaScript的八大数据类型

简介: JavaScript 数据类型是前端开发的基石,共8种,分基本与引用两大类。基本类型(Number、String、Boolean、Undefined、Null、Symbol、BigInt)存于栈中,值不可变;引用类型(Object,含数组、函数等)存于堆中,按地址访问。二者在赋值与比较时行为不同。`typeof` 可判多数类型,但 `null` 例外(返回 "object"),精准判断推荐 `Object.prototype.toString.call()`。

在前端开发中,数据类型是构建一切逻辑的原子。

在 JavaScript(ECMAScript 标准)中,数据类型主要分为两大类:基本数据类型(Primitive)引用数据类型(Reference)。目前共有 8 种

JavaScript 的 8 大数据类型

在 JavaScript 的世界里,数据被分为两大阵营:基本数据类型(Primitive)引用数据类型(Reference)。截至目前的 ECMAScript 标准,共有 8 种 原生数据类型。


一、 基本数据类型(值类型)

基本类型存放在内存的 栈(Stack) 中,特点是:值直接存储在变量访问的位置

1. Number (数值)

包含整数和浮点数,还有特殊的 NaN(Not a Number)和 Infinity

  • 例子: let age = 25;, let price = 99.99;, let nan = NaN; (非数字)。

2. String (字符串)

用于表示文本,可以使用单引号、双引号或反引号(模板字符串)。

  • 例子: let name = "兮动人";
let greeting = Hello, ${
   name};

3. Boolean (布尔值)

只有两个逻辑值。

  • 例子: let isLogin = true;

4. Undefined (未定义)

变量已声明但未初始化时的默认值。
当一个变量被声明了但没赋值时,它的默认值就是 undefined

  • 例子:
let x; // x 的值就是 undefined

5. Null (空值)

表示一个空对象的指针。通常用于主动释放对象引用。

表示一个“空”的对象引用。有趣的是,typeof null 会返回 "object",这是 JS 历史遗留的一个著名 Bug。

  • 例子: let user = null;

6. Symbol (符号) - ES6 引入

表示独一无二的值,常用于解决对象属性名冲突问题。

  • 例子:
let id = Symbol("key");
let emptyRoom = null;

7. BigInt (任意精度整数) - ES10 引入

用于表示大于 的整数(Number 类型的安全上限)。

  • 例子:
let bigNum1 = 9007199254740991n;

二、 引用数据类型(对象类型)

8. Object (对象)

存放在内存的堆(Heap)中。变量名在栈中存储的不是值本身,而是一个指向堆内存地址的指针

除了普通对象 {},以下本质上也属于 Object:

  • 普通对象: let user = { name: "xdr630", age: 22 };
  • Array (数组): [1, 2, 3]
  • Function (函数): function() {}
  • Date (日期)、RegExp (正则) 等。

三、 核心区别对比

特性 基本数据类型 (Primitive) 引用数据类型 (Reference)
存储位置 栈 (Stack) 堆 (Heap)
赋值表现 值的拷贝(修改副本不影响原值) 地址的拷贝(修改副本会改变原对象)
大小 占用空间固定、小 占用空间大、不固定
比较 比较的是 是否相等 比较的是 内存地址 是否相同

四、 如何精准判断类型?

在实际开发中,经常用到以下三种方式:

  1. typeof: 简单好用,但无法区分 nullobject(都会返回 "object"),也无法区分数组。
  2. instanceof: 用于判断某个实例是否属于某个构造函数(如 arr instanceof Array)。
  3. Object.prototype.toString.call(): 最强方案。能精准返回 [object Array][object Null] 等字符串。

小知识: 为什么 typeof null"object"
这是 JS 最初设计时的 Bug,为了兼容旧代码,这个错误被一直保留到了今天。

目录
相关文章
|
5天前
|
数据采集 人工智能 安全
|
15天前
|
云安全 监控 安全
|
1天前
|
存储 SQL 大数据
删库跑路?别慌!Time Travel 带你穿回昨天的数据世界
删库跑路?别慌!Time Travel 带你穿回昨天的数据世界
233 156
|
8天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
588 5
|
11天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
768 152
|
20天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1864 9
|
2天前
|
机器学习/深度学习 人工智能 监控
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
217 163