HoRain云--JavaScript数据类型全解析
本文详细介绍了JavaScript的8种数据类型,分为基本数据类型(7种)和引用数据类型(1种)。基本数据类型包括Number、String、Boolean、Undefined、Null、Symbol和BigInt,具有值存储、不可变等特点;引用数据类型主要是Object,存储在堆内存中,通过引用访问。文章对比了两类数据类型的核心区别,介绍了typeof、instanceof等方法进行类型判断,并

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
|
专栏名称 |
专栏介绍 |
|
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
|
|
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
|
|
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
|
|
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
|
|
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
|
|
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录

JavaScript 数据类型详解
JavaScript 有 8 种数据类型,分为两大类:基本数据类型(7种) 和 引用数据类型(1种)。
一、基本数据类型(7种)
1. Number(数值)
- 包含整数和浮点数
- 基于 IEEE 754 规范的 64 位双精度浮点数
- 特殊值:
NaN(Not a Number)、Infinity - 整数安全范围:
-(2^53 - 1)到2^53 - 1 - 示例:
42,3.14,NaN,Infinity
2. String(字符串)
- Unicode 字符序列(UTF-16 编码)
- 用单引号、双引号或反引号(模板字符串)表示
- 不可变类型,字符串方法返回新字符串
- 示例:
"Hello",'World',`Template ${1+1}`
3. Boolean(布尔值)
- 只有两个值:
true和false - 用于条件判断(
if、while等) - 示例:
true,false
4. Undefined(未定义)
- 变量已声明但未初始化时的默认值
- 访问不存在的对象属性时返回
- 没有返回值的
return语句返回 - 示例:
let x;→x的值为undefined
5. Null(空值)
- 表示"故意的空值",通常用于主动释放对象引用
typeof null返回"object"(历史遗留问题)- 示例:
let user = null;
6. Symbol(符号)- ES6 引入
- 表示独一无二的值,用于解决对象属性名冲突
- 每个 Symbol 实例都是唯一的
- 示例:
let id = Symbol("key");
7. BigInt(大整数)- ES10 引入
- 用于表示超出 Number 安全范围的整数
- 字面量后缀为
n(如9007199254740991n) - 不能与 Number 类型混合使用
- 示例:
const bigNum = 9007199254740991n;
二、引用数据类型(1种)
1. Object(对象)
- 存储在堆内存中,变量存储的是引用地址
- 可变类型,修改副本会影响原对象
- 包含:普通对象、数组、函数、日期、正则等
- 示例:
{name: "John"},[1, 2, 3],function() {}
三、核心区别对比
| 特性 | 基本数据类型 | 引用数据类型 |
|---|---|---|
| 存储位置 | 栈(Stack) | 堆(Heap) |
| 赋值表现 | 值的拷贝 | 地址的拷贝 |
| 大小 | 占用空间固定、小 | 占用空间大、不固定 |
| 比较 | 比较的是值是否相等 | 比较的是内存地址是否相同 |
四、数据类型判断方法
-
typeof运算符- 适用于基本类型,但有局限性
typeof null返回"object"(历史遗留问题)typeof []返回"object"(无法区分数组和对象)- 示例:
typeof "hello"→"string",typeof 123→"number"
-
instanceof运算符- 用于判断对象是否是某个构造函数的实例
- 不能用于基本类型
- 示例:
[] instanceof Array→true,{} instanceof Object→true
-
Object.prototype.toString.call()- 最准确的类型判断方法
- 返回格式:
[object 类型] - 示例:
Object.prototype.toString.call(123)→[object Number]
五、常见问题
1. undefined 与 null 的区别
undefined:变量已声明但未赋值null:变量已赋值为"空",表示有意的空值
2. Number 的精度问题
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false
3. BigInt 的使用
const bigInt = 9007199254740991n;
console.log(bigInt + 1n); // 9007199254740992n
// console.log(bigInt + 1); // TypeError: Cannot mix BigInt and other types
4. Symbol 的妙用
const id = Symbol('id');
const obj = {
[id]: 'value'
};
console.log(obj[id]); // 'value'
JavaScript 的数据类型设计使其具有强大的灵活性,但也需要注意类型判断和类型转换的陷阱,特别是在处理数字精度和引用类型时。理解这些数据类型及其特性是编写健壮 JavaScript 代码的基础。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
更多推荐


所有评论(0)