JS的数据类型

160 阅读2分钟

一、JS的数据类型

JavaScript主要数据类型共有8种,有stringnumberbooleanundifindnullsymbolbigintobject。其中8种可以笼统的分为两大类:基本数据类型引用数据类型

基本数据类型: string(字符串)、number(数字)、boolean(布尔)、null(空)、undefined(未定义)、symbol(符号)、bigint(任意精度的整数)

引用数据类型: object(对象,arrayfunction是对象的子类型。对象在逻辑上是属性的无序集合,是存放各种值的容器。对象存储的是引用地址,所以和基本类型值不可变的特效不同,对象值是可变的。)

二、基本数据类型和引用数据类型的特点

1. 基本数据类型

基本数据类型存储在栈中(栈区指内存里的栈内存),占用的内存较小,可以直接操作它们的值,而且是按值传递的,即一个变量的值是直接存储在变量中的,它们的比较是按值进行的。

例如:有以下几个基本类型的变量:

let name = 'jozo';
let city = 'guangzhou';
let age = 22;

image.png

栈区包括了变量的标识符和变量的值。

2. 引用数据类型

引用数据类型的对象存储于堆中,占用的内存较大,不能直接操作它们的值,而是需要通过引用来访问它们的属性和方法,它们的赋值和比较也是按引用进行的,即一个变量的值是一个指向实际对象的引用。

例如:有以下几个对象:

let person1 = {name:'jozo'};
let person2 = {name:'xiaom'};
let person3 = {name:'xiaoq'};

则这三个对象在内存中保存的情况如下图:

image.png

由于基本数据类型和引用数据类型的差异,它们在使用上也有所不同。当我们对基本类型进行赋值、传参和比较时,只是对它们的值进行操作,而不会影响其他变量的值。但是对于引用类型,如果我们将一个引用类型变量赋值给另一个变量,那么两个变量实际上是指向同一个对象的引用。这意味着,如果我们在其中一个变量上进行修改,另一个变量也会受到影响。