🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

JavaScript 数据类型详解

一、基本数据类型(7种)

1. Number(数值)

2. String(字符串)

3. Boolean(布尔值)

4. Undefined(未定义)

5. Null(空值)

6. Symbol(符号)- ES6 引入

7. BigInt(大整数)- ES10 引入

二、引用数据类型(1种)

1. Object(对象)

三、核心区别对比

四、数据类型判断方法

五、常见问题

1. undefined 与 null 的区别

2. Number 的精度问题

3. BigInt 的使用

4. Symbol 的妙用


img

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(布尔值)

  • 只有两个值:truefalse
  • 用于条件判断(ifwhile 等)
  • 示例: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)
赋值表现 值的拷贝 地址的拷贝
大小 占用空间固定、小 占用空间大、不固定
比较 比较的是值是否相等 比较的是内存地址是否相同

四、数据类型判断方法

  1. typeof 运算符

    • 适用于基本类型,但有局限性
    • typeof null 返回 "object"(历史遗留问题)
    • typeof [] 返回 "object"(无法区分数组和对象)
    • 示例:typeof "hello""string", typeof 123"number"
  2. instanceof 运算符

    • 用于判断对象是否是某个构造函数的实例
    • 不能用于基本类型
    • 示例:[] instanceof Arraytrue, {} instanceof Objecttrue
  3. Object.prototype.toString.call()

    • 最准确的类型判断方法
    • 返回格式:[object 类型]
    • 示例:Object.prototype.toString.call(123)[object Number]

五、常见问题

1. undefinednull 的区别

  • 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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐