JavaScript的数据类型

简介: JavaScript的数据类型

今天说说JavaScript的数据类型,很多人会认为有六种数据类型,其实不是很全面,我们就盘盘JavaScript到底有几种数据类型,我们分原始类型和引用类型说。

1 typeof 操作符

在说数据类型之前,我们需要知道如何去判断一个变量属于什么数据类型,typeof操作符就是为此而生的。对一个值使用 typeof 操作符会返回下列字符串之一:

"undefined"    表示值未定义;
"boolean"      表示值为布尔值;
"string"       表示值为字符串;
"number"       表示值为数值;
"object"       表示值为对象;
"function"     表示值为函数;
"symbol"       表示值为符号;
"bigint"       表示值最大安全整数;

复制

2 原始数据类型

在ES6之前,有五种原始数据类型,number、string、boolean、null、undefined,在ES6新增一种symbol,ES10新增一种bigint。算下来,原始数据类型就有7种。

2.1 number

let a = 1
let b = 1.1
let c = -1.1
typeof a  // "number"
typeof b  // "number"
typeof c  // "number"

复制

我们通过操作符typeof可以看出上面几个变量都是原始数据类型中的数字类型,这里我们说下特殊的数值NaN,意思是“不是数值”(Not a Number),用于表示本来要返回数值的操作失败了(而不是抛出错误)。

console.log(0/0);    // NaN
console.log(-0/+0);  // NaN

复制

我们还可以通过Number()、parseInt()和 parseFloat()将非数值转换为数值。

2.2 string

let firstName = "lilei";
let lastName = 'lixiaolei';

复制

这里就不多说了,单引号和双引号都是可以定义字符串的。

2.3 boolean

Boolean(布尔值)类型是 ECMAScript 中使用最频繁的类型之一,有两个字面值:true 和 false。

let a = false;
let b = true;

复制

2.4 null

Null 类型只有一个值,即特殊值 null。逻辑上讲,null 值表示一个空对象指针,这也是给typeof 传一个 null 会返回"object"的原因:

let car = null;
console.log(typeof car); // "object"

复制

2.5 undefined

Undefined 类型也只有一个值,就是特殊值 undefined。当使用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予了 undefined 值:

let message;
console.log(message == undefined); // true

复制

2.6 symbol(ES6)

Symbol(符号)是 ECMAScript 6 新增的数据类型。用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

let sym = Symbol();
console.log(typeof sym); // symbol

复制

2.7 bigint(ES10)

BigInt数据类型的目的是比Number数据类型支持的范围更大的整数值。在对大整数执行数学运算时,以任意精度表示整数的能力尤为重要。使用BigInt,整数溢出将不再是问题。

let max = Number.MAX_SAFE_INTEGER;    // 最大安全整数
let max1 = max + 1
let max2 = max + 2
max1 === max2  //true

复制

由于JavaScript按照IEEE 754-2008标准的定义,所有数字都以双精度64位浮点格式表示。在此标准下,无法精确表示的非常大的整数将自动四舍五入。确切地说,JS 中的Number类型只能安全地表示-9007199254740991 (-(2^53-1)) 和9007199254740991(2^53-1)之间的整数,任何超出此范围的整数值都可能失去精度。使用BigInt,应用程序不再需要变通方法或库来安全地表示Number.MAX_SAFE_INTEGER和Number.Min_SAFE_INTEGER之外的整数。现在可以在标准JS中执行对大整数的算术运算,而不会有精度损失的风险。

let max = BigInt(Number.MAX_SAFE_INTEGER);
let max1 = max + 1n
let max2 = max + 2n
max1 === max2 // false

复制

3 引用数据类型

引用数据类型(object类型),其实就是一组数据和功能的集合,通过 new 操作符后跟对象类型的名称来创建。我们常用的object、array、function、data等都属于引用类型。

let a = new Function()
let b = new Date()
let c = new Object()
let d = new Array()

复制

关于引用类型的属性和方法,我们后期再讲。

4 总结

JavaScript的数据类型一共有8种,基本数据类型有7种,number、string、boolean、null、undefined,symbol(ES6),bigint(ES10),引用类型有1种object,我们常用的object、array、function、data等都属于引用类型。

相关文章
|
14天前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
130 59
|
2月前
|
JavaScript
js基础数据类型
js基础数据类型
27 1
|
7天前
|
存储 前端开发 JavaScript
前端基础(三)_JavaScript数据类型(基本数据类型、复杂数据类型)
本文详细介绍了JavaScript中的数据类型,包括基本数据类型(Number、String、Boolean、Undefined、Null)和复杂数据类型(Object),并解释了如何使用`typeof`操作符来识别变量的数据类型。同时,还讨论了对象、函数和数组等复杂数据类型的使用方式。
13 2
|
1月前
|
JavaScript 前端开发
JavaScript基础知识-基本数据类型和引用数据类型
关于JavaScript基础知识的文章,主要介绍了基本数据类型和引用数据类型。
34 2
JavaScript基础知识-基本数据类型和引用数据类型
|
2月前
|
JavaScript 前端开发
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
这篇文章是JavaScript基础与实战教程的第一部分,涵盖了JavaScript的基本语法、标识符、数据类型以及如何进行强制类型转换,通过代码示例介绍了JS的输出语句、编写位置和数据类型转换方法。
JavaScript基础&实战(1)js的基本语法、标识符、数据类型
|
2月前
|
开发者 图形学 开发工具
Unity编辑器神级扩展攻略:从批量操作到定制Inspector界面,手把手教你编写高效开发工具,解锁编辑器隐藏潜能
【8月更文挑战第31天】Unity是一款强大的游戏开发引擎,支持多平台发布与高度可定制的编辑器环境。通过自定义编辑器工具,开发者能显著提升工作效率。本文介绍如何使用C#脚本扩展Unity编辑器功能,包括批量调整游戏对象位置、创建自定义Inspector界面及项目统计窗口等实用工具,并提供具体示例代码。理解并应用这些技巧,可大幅优化开发流程,提高生产力。
126 1
|
2月前
|
JavaScript 前端开发
JS常用数据类型转换(数字型和字符串型之间转换)
JS常用数据类型转换(数字型和字符串型之间转换)
40 2
|
2月前
|
前端开发 JavaScript
Web 前端大揭秘!JS 数据类型检测竟如此震撼,一场惊心动魄的代码探秘之旅等你来!
【8月更文挑战第23天】在Web前端开发中,合理检测数据类型至关重要。JavaScript作为动态类型语言,变量类型可在运行时变化,因此掌握检测技巧十分必要。
27 1
|
2月前
|
存储 前端开发 JavaScript
Web前端的奇幻之旅:探索JS数据类型的奥秘与差异
【8月更文挑战第23天】JavaScript是一种动态类型语言,提供多种内置数据类型支持信息的存储与操作。这些类型对Web前端开发者至关重要,直接影响代码性能与可读性。JavaScript数据类型主要分为两大类:原始数据类型(如Undefined、Null、Boolean等)与引用数据类型(如Object、Array等)。原始类型直接存储值,而引用类型存储指向数据的引用。原始类型不可变且存储在栈中,访问更快;引用类型则存储在堆中,可通过其引用进行修改。理解这些差异有助于编写高效、可维护的代码。
33 0
|
2月前
|
存储 JavaScript 前端开发
JavaScript引用数据类型和构造函数的秘密
JavaScript引用数据类型和构造函数的秘密