一、JS的数据类型
JavaScript主要数据类型共有8种,有string、number、boolean、undifind、null、symbol、bigint、object。其中8种可以笼统的分为两大类:基本数据类型和引用数据类型。
基本数据类型: string(字符串)、number(数字)、boolean(布尔)、null(空)、undefined(未定义)、symbol(符号)、bigint(任意精度的整数)
引用数据类型: object(对象,array和function是对象的子类型。对象在逻辑上是属性的无序集合,是存放各种值的容器。对象存储的是引用地址,所以和基本类型值不可变的特效不同,对象值是可变的。)
二、基本数据类型和引用数据类型的特点
1. 基本数据类型
基本数据类型存储在栈中(栈区指内存里的栈内存),占用的内存较小,可以直接操作它们的值,而且是按值传递的,即一个变量的值是直接存储在变量中的,它们的比较是按值进行的。
例如:有以下几个基本类型的变量:
let name = 'jozo';
let city = 'guangzhou';
let age = 22;
栈区包括了变量的标识符和变量的值。
2. 引用数据类型
引用数据类型的对象存储于堆中,占用的内存较大,不能直接操作它们的值,而是需要通过引用来访问它们的属性和方法,它们的赋值和比较也是按引用进行的,即一个变量的值是一个指向实际对象的引用。
例如:有以下几个对象:
let person1 = {name:'jozo'};
let person2 = {name:'xiaom'};
let person3 = {name:'xiaoq'};
则这三个对象在内存中保存的情况如下图:
由于基本数据类型和引用数据类型的差异,它们在使用上也有所不同。当我们对基本类型进行赋值、传参和比较时,只是对它们的值进行操作,而不会影响其他变量的值。但是对于引用类型,如果我们将一个引用类型变量赋值给另一个变量,那么两个变量实际上是指向同一个对象的引用。这意味着,如果我们在其中一个变量上进行修改,另一个变量也会受到影响。