JavaScript:数据类型 / 基本数据类型 / 引用数据类型 / 特殊类型 / ES6 提供的类型

一、掌握数据类型的重要性

掌握JavaScript数据类型非常重要,因为JavaScript是一种动态类型的编程语言,数据类型的正确使用对于开发人员来说至关重要。以下是掌握JavaScript数据类型的几个重要原因:

序号原因解释
1帮助避免错误了解和正确使用JavaScript数据类型可以帮助开发人员避免常见的错误。例如,如果不了解数据类型的规则,可能会发生类型转换错误或意外的行为。
2决定操作的结果JavaScript中的不同数据类型具有不同的行为和操作。了解数据类型可以帮助开发人员确定在特定情况下使用何种操作,并预测操作的结果。
3内存管理了解数据类型还有助于理解JavaScript中的内存管理。不同的数据类型在内存中占用不同的空间,正确使用数据类型可以优化内存使用并提高性能。
4开发高质量的代码了解和正确使用数据类型可以帮助开发人员编写高质量的代码。使用正确的数据类型可以使代码更具可读性、可维护性和可扩展性。
5与其他编程语言交互掌握数据类型还有助于与其他编程语言进行交互。不同的编程语言可能具有不同的数据类型,了解它们可以更轻松地在不同的环境中工作。
掌握JavaScript数据类型对于编写高质量、可维护和可扩展的代码至关重要。它可以帮助避免错误,预测操作结果,优化内存使用,并与其他编程语言进行交互。

二、JavaScript数据类型简介

2.1、基本类型

基本类型 / 原始数据类型
序号类型解释
1数字 / number

用于表示数值,可以是整数或浮点数。

例如:10, 3.14。

2字符串 / string

用于表示文本。由一系列字符组成,可以使用单引号(')、双引号(")或模板字符串(`)来定义。

例如:"Hello, world!"。

3布尔值 / boolean

用于表示真值(true)或假值(false)。主要用于条件判断和逻辑运算。

例如:true, false。

4空 / null

表示一个没有值的特殊类型。它是一个关键字,表示变量不引用任何对象。

例如:null。

5未定义 / undefined

表示一个未赋值的变量。当声明了一个变量但没有给它赋值时,它的值就是undefined。

例如:let x; (未赋值的变量x的值就是undefined)。

2.2、引用类型

引用类型 / 复杂数据类型 / 对象类型
序号类型解释
1对象 / object对象是引用类型的基础,它是一组无序的键值对集合。对象可以使用字面量、构造函数或Object.create()方法来创建。
2数组 / array数组是一种特殊的对象,其中的值按照数字索引(从0开始)进行存储。数组有多种初始化方式,可以使用字面量或Array构造函数来创建。
3函数 / function函数也是一种对象,具有可执行的代码块。函数可以接受参数、执行一些操作并返回值。可以使用function关键字、函数声明或函数表达式来创建函数。
4日期 / Date日期对象用于处理日期和时间的操作,可以获取、设置和计算日期和时间。
5正则表达式 / RegExp正则表达式可以用来匹配和操作字符串。它由一个模式和一些可选的标志组成,可以进行字符匹配、替换和提取等操作。
6错误对象 / Errorvar myError = new Error("This is an error message");
7Math对象 / 不属于引用类型不属于引用类型,Math对象不属于JavaScript中的引用类型。它是一个内置对象,而引用类型通常是由开发人员创建的对象。
8JSON对象JSON对象在JavaScript中属于引用类型。JSON是一种用于表示数据的格式,它 stands for JavaScript Object Notation(JavaScript对象表示法)。虽然JSON是一种数据格式,但在JavaScript中,它也被解析为一个对象。
var obj = { name: "John", age: 25 };
var jsonStr = JSON.stringify(obj);
var parsedObj = JSON.parse(jsonStr);
在JavaScript中,引用类型是一种数据类型,它是对象类型,或者更具体地说,是除Number、String、Boolean、Null、Undefined之外的任何数据类型。引用类型(也称为对象类型)的值是对象,保存在堆内存中。变量对实际的对象只是一个引用,而不是实际的对象。这样,不同的变量可以指向同一个对象,而修改这个对象会影响到所有的变量。

2.3、特殊类型

特殊类型
序号类型解释
1NaN

表示一个非数值(Not a Number)的特殊值。它是一个全局对象属性,当进行数学运算失败时,会返回NaN。

例如:0/0。

2Infinity

表示无穷大的特殊值。当进行数学运算导致一个值超出了JavaScript能表示的范围时,会返回Infinity。

例如:1 / 0。

2.4、ES6中提供的数据类型

ES6中提供的数据类型
序号类型解释
1SymbolSymbol是一种原始数据类型,表示一个唯一的标识符。它可以用作对象属性的键,用于创建唯一的常量值。
2SetSet是一种新的集合数据结构,它允许存储任何类型的唯一值。Set中的值是无序的,且不允许重复。
3MapMap是一种新的键值对数据结构,它类似于对象,但可以使用任意类型的值作为键,并且保持插入顺序。
4WeakSetWeakSet是一种特殊的Set,它只能存储对象,并且对于存储的对象是弱引用,即如果没有其他引用指向这个对象,它将会被垃圾回收。
5WeakMapWeakMap是一种特殊的Map,它只能使用对象作为键,并且对于键所引用的对象是弱引用,即如果没有其他引用指向这个对象,它将会被垃圾回收。

2.5、ES6还引入了一些特性来增强现有的数据类型

序号方法解释
1let和const关键字用于声明块级作用域的变量(let)和常量(const)。
2Arrow function(箭头函数)一种更简洁的函数声明语法,提供了更方便的this绑定和更短的函数体写法。
3Class(类)引入了class关键字,用于定义类和面向对象的编程。
4Promise(Promise对象)用于异步操作的解决方案,可以更优雅地处理异步编程。

2.6、BigInt

BigInt 是在 ES2020(ECMAScript 2020)中引入的一种新的数据类型,用于表示任意大小的整数。在 ES6 中,虽然 JavaScript 的 Number 类型能够表示很大范围的数值,但其精度是有限的,对于超过 Number.MAX_SAFE_INTEGER(即 2^53 - 1)的整数,JavaScript 的 Number 类型无法精确表示。而 BigInt 的出现解决了这个问题,允许 JavaScript 能够安全地表示和操作任意大小的整数。

需要注意的是,BigInt 和其他 JavaScript 数字类型(如 Number)是不兼容的,它们之间不能直接进行算术运算。如果需要进行混合运算,需要将 BigInt 转换为 Number,或者将 Number 转换为 BigInt,但这样可能会导致精度损失或溢出。因此,在使用 BigInt 时需要特别注意数据类型的转换和运算的精度问题。

三、数据类型详解

3.1、number类型

3.2、String类型

3.3、boolean类型

3.4、undefined类型

只有一个值,即undefined,如果声明了一个变量,但是未给变量初始化值,那么这个变量的值就是undefined

调用函数时,应该提供的参数没有提供,该参数等于undefined

对象没有赋值的属性,该属性的值为undefined

函数没有返回值,默认返回undefined

3.5、null类型

只有一个值。null表示一个空对象指针,这也是typeof操作检测null值时会返回object的原因

3.6、object类型

3.7、Symbol类型

Symbol类型的对象永远不相等,即便创建的时候传入相同的值。因此,可以用解决属性名冲突的问题(适用于多少编码),作为标记。

3.8、Set

Set 是 ES6(ECMAScript 2015)提供的一种新的数据类型。

Set 对象是一种特殊的类型,它类似于数组,但成员的值都是唯一的,没有重复的值。Set 的一个关键特性就是成员的值都是唯一的,没有重复的值。Set 内部使用类似于 Hash 表的机制,所以插入和查找的效率很高,都为 O(1)。

使用 Set 可以很容易地实现并集(Union)、交集(Intersection)和差集(Difference)操作,因此非常适合用于处理集合运算。

下面是一个简单的例子,展示了如何使用 Set:

javascript
// 创建一个 Set 对象
const mySet = new Set();

// 添加成员
mySet.add(1);
mySet.add(2);
mySet.add(2); // 添加重复成员,Set 会自动去重

// 检查成员是否存在
console.log(mySet.has(1)); // 输出: true
console.log(mySet.has(3)); // 输出: false

// 删除成员
mySet.delete(2);
console.log(mySet.has(2)); // 输出: false

// 获取 Set 的大小
console.log(mySet.size); // 输出: 1

// 遍历 Set 成员
for (let item of mySet) {
  console.log(item); // 输出: 1
}

由于 Set 的成员都是唯一的,所以经常用于需要去除数组中重复元素的场景。同时,Set 对象的属性和方法也提供了很多有用的功能,比如 clear() 方法用于清空 Set,keys()、values() 和 entries() 方法返回一个新的迭代器对象,它包含 Set 对象中每个元素的 [value, value] 对。 

四、JavaScript类型转换

4.1、数值转换字符串String()

4.2、数值转换字符串:toString()

4.3、字符串转数值:Number()

 一元的 + 运算符可用于把变量转换为数字:

如果无法转换变量则仍会成为数字,但是值为NaN(Not a number):

 

4.4、日期转数字:Number()

4.5、日期转数字:getTime()

JavaScript 类型转换 (w3school.com.cn)

五、检验数据类型

5.1、typeof()

5.2、isNaN()

5.3、instanceof()

5.4、对象的constructor属性

5.5、Array.isArray检验值是否为数组

六、过程记录

6.1、null和undefined区别

Null只有一个值,是null。不存在对象。

Undefined只有一个值,是undefined。没有初始化。undefined是从null中派生出来的。

简单理解就是:undefined是没有定义的,null是定义了但是为空。

6.2、null不存在的原因,解决方法

6.3、==和===区别,使用场景

6.4、对象可以比较?

6.5、借助undefined值检测一个变量是否被初始化

let a;

console.log(a);

(a == undefined) && (a = 0);

console.log(a);

或借助typeof运算符检测变量的类型是否为undefined。

(typeof a == 'undefined') && (a = 0);

大小写注意:小写的number只是关键字,Number是内置对象,number类型的变量都是继承的Number对象,本质上也是对象。

七、欢迎交流指正

八、参考链接

JS 判断数据类型的方法_s_kzn的博客-CSDN博客_js判断数据类型的方法

JS 判断数据类型的方法_s_kzn的博客-CSDN博客_js判断数据类型的方法

JS数据类型之基本数据类型_lareinalove的博客-CSDN博客_js中基本数据类型

(2条消息) JavaScript 的 7 种基本数据类型_Mark-CSDN博客_js数据类型

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值