JavaScript 中的七种基本数据类型

文章目录

在JavaScript中,有七种基本数据类型。这些数据类型是构建所有其他复杂数据结构和对象的基础

一、字符串 (String)

字符串用于表示文本数据。它可以包含在单引号(')或双引号(")中。例如:"Hello, World!"。

javascript 复制代码
let message = "Hello, World!";

二、数字 (Number)

2.1 整数与浮点数

JavaScript中的数字类型包括整数和浮点数。整数是不带小数点的数字,而浮点数则包含小数部分

javascript 复制代码
let integerNumber = 42;
let floatingPointNumber = 3.14;

2.2 安全整数

在javaScript中涉及安全整数,即仅能安全地存储在 -(2^53 − 1)(Number.MIN_SAFE_INTEGER)到 2^53 − 1(Number.MAX_SAFE_INTEGER)

javascript 复制代码
console.log(Number.MIN_SAFE_INTEGER);  //-9007199254740991
console.log(Number.MAX_SAFE_INTEGER);   //9007199254740991

超过安全整数就可能发生误差问题。

javascript 复制代码
//下面两个的数值相等
console.log(9007199254740991 + 1);    //9007199254740992
console.log(9007199254740991 + 2);    //9007199254740992

那如果碰到一个大数据,除了手动和2^53 − 1(Number.MAX_SAFE_INTEGER)运算之外,如何检查一个数是否在安全的整数范围内呢,可以用到Number.isSafeInteger()检验

javascript 复制代码
console.log(Number.isSafeInteger(9007199254740991 + 1));   //false

2.3 特殊值

Number 类型是一种基于 IEEE 754 标准的双精度 64 位二进制格式的值。它能够存储 2^1074(Number.MIN_VALUE)和 2^1024(Number.MAX_VALUE)之间的正浮点数,以及 -2^1074 和 -2^1024 之间的负浮点数.超出便会自动转换

  • 大于 Number.MAX_VALUE 的正值被转换为 +Infinity。
  • 小于 Number.MIN_VALUE 的正值被转换为 +0。
  • 小于 -Number.MAX_VALUE 的负值被转换为 -Infinity。
  • 大于 -Number.MIN_VALUE 的负值被转换为 -0
javascript 复制代码
console.log(0 / 0); // 输出: NaN
console.log(1 / 0); // 输出: Infinity
console.log(-1 / 0); // 输出: -Infinity

2.4 浮点数问题

在 JavaScript 中进行精确的浮点数比较可能会出现意料之外的结果,这是由于浮点数舍入误差的原因。为了避免这种问题,可以使用像toFixed()这样的方法来限制小数位数。

javascript 复制代码
let a = 0.1;
let b = 0.2;
let result = a + b;
console.log(result); // 可能输出: 0.30000000000000004

那具体产生误差的原因是什么呢?

具体可以参照这篇博客JS浮点数精度问题及解决方案

2.5 进制数据

我们常写的数据是十进制数据。那二进制,八进制等这些数据JavaScript是否可以表示呢。答案是肯定的

  • 16进制的数据,0x开头
  • 8进制的数据,0o开头
  • 2进制的数据,0b开头
javascript 复制代码
console.log(0x10);   //16
console.log(0o1);   //1
console.log(0b1);   //1

2.6 NaN

NaN("Not a Number")是一个特殊种类的数值,当算术运算的结果不表示数值时,通常会遇到它。它也是 JavaScript 中唯一不等于自身的值。

javascript 复制代码
console.log(typeof NaN); //number
console.log(NaN === NaN); //false

三、 布尔值 (Boolean)

布尔值用于表示逻辑值 true 或 false。它经常用于控制流程和条件判断

javascript 复制代码
let a= true;
let b= false;

四、空值 (Null)

null表示一个空对象。当要明确表示变量为空时,可以赋予它 null 值

null与false、0、''、undefined、NaN都是虚值。如果在条件语句中遇到虚值,那么 JS 将把虚值强制转为false。

null 也称为早期JavaScript 实现的一个错误。

javascript 复制代码
console.log(typeof null); //'object'

五、未定义 (Undefined)

当我们不清楚变量之后的值具体为什么,这时候我们可以赋其值为 undefined。

5.1 null 和 undefined区别

  • 使用方式的区别:声明但未定义(即不知道该变量之后的值具体类型)可以用undefined。但如果很确信该变量值之后是一个对象,这时我们可以先赋值为null。

  • typeof类型不同:undefined的类型是undefined;null类型是object

  • 和数值运算值不同:undefined和数值运算值为NaN;null为转换为0

六、 Symbol

Symbol 是 ECMAScript 6 新增的数据类型,用于创建唯一的标识符。它通常用于对象属性的唯一键

javascript 复制代码
console.log(typeof Symbol("a")); //symbol
console.log(Symbol("a") == Symbol("a")); //false

在实际开发中,Symbol经常用于以下场景:

  • 私有属性/方法: 使用Symbol作为对象属性名,可以模拟私有属性和方法,因为Symbol属性不会出现在对象的枚举属性中。
  • 定义常量: 在大型项目中,可以使用Symbol定义全局常量,以避免命名冲突和意外修改。

七、BigInt

BigInt存储和操作大整数。表示大于 2^53 - 1 的整数

javascript 复制代码
console.log(9007199254740991n + 1n);   //9007199254740992n
console.log(9007199254740991n + 2n);   //9007199254740993n

用BigInt操作数据会存在一些问题,如操作符结果会向零取整,和Number 不是严格相等的等等。所以在真正遇到大数据时,还是建议使用相关的库来进行保存和运算。

八、总结

类型 typeof 返回值 对象包装器
Null "object" 不适用
Undefined "undefined" 不适用
Boolean "boolean" Boolean
Number "number" Number
BigInt "bigint" BigInt
String "string" String
Symbol "symbol" Symbol
相关推荐
勘察加熊人2 分钟前
wpf+c#路径迷宫鼠标绘制
开发语言·c#·wpf
小黄人软件1 小时前
C# ini文件全自动界面配置:打开界面时读ini配置到界面各控件,界面上的控件根据ini文件内容自动生成,点保存时把界面各控件的值写到ini里。
开发语言·c#
Android洋芋4 小时前
C语言深度解析:从零到系统级开发的完整指南
c语言·开发语言·stm32·条件语句·循环语句·结构体与联合体·指针基础
bjxiaxueliang4 小时前
一文详解QT环境搭建:Windows使用CLion配置QT开发环境
开发语言·windows·qt
猫猫不是喵喵.4 小时前
vue 路由
前端·javascript·vue.js
Run_Teenage4 小时前
C语言 【初始指针】【指针一】
c语言·开发语言
苹果.Python.八宝粥4 小时前
Python第七章02:文件读取的练习
开发语言·python
烛阴5 小时前
JavaScript Import/Export:告别混乱,拥抱模块化!
前端·javascript
bin91535 小时前
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例12,TableView16_12 拖拽动画示例
前端·javascript·vue.js·ecmascript·deepseek
J不A秃V头A5 小时前
Redis批量操作详解
开发语言·redis