JavaScript基本数据类型和引用数据类型详解
数据类型小知识
JavaScript主要数据类型共有7种,有string、number、boolean、undefined、null、symbol、object。其余7种可以笼统的分为两大类:基本数据类型和引用数据类型。
基本数据类型:string(字符串)、number(数字)、boolean(布尔)、null(空)、undefined(未定义)、symbol(符号)
引用数据类型:object(对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象)
基本数据类型:
基本数据类型的主要特点是赋值方式是传值,并且值存在栈中。
例如:
let val1="基本数据类型" let val2=val1 console.log(val2)//基本数据类型
基本数据类型的值,赋值后相互不会影响。
例如:
val2="基本数据的值被修改" console.log(val1)//基本数据类型 console.log(val2)//基本数据的值被修改
下表展示这种数据类型的赋值过程:
栈内存
变量名 | 值 |
val1 | 基本数据类型 |
变量名 | 值 |
val1 | 基本数据类型 |
val2 | 基本数据类型 |
变量名 | 值 |
val1 | 基本数据类型 |
val2 | 基本数据类型的值被修改 |
引用数据类型:
引用数据类型的主要特点是赋值方式是传址,并且值存在堆中。(因为引用数据的值的大小无法确定,要根据情况进行特定的配置)
例如:
const obj1=new Object() const obj2=val1 console.log(obj2)//{}
引用数据类型的值,赋值后相互影响。
例如:
obj2.name = "引用数据的值被修改" console.log(obj1.name)//引用数据的值被修改
下表展示这种数据类型的赋值过程:
栈内存
变量名 | 值 |
val1 | 引用地址(object) |
变量名 | 值 |
val1 | 引用地址(object) |
val2 | 引用地址(object) |
变量名 | 值 | |
val1 | 引用地址(object) | |
val2 | 引用地址(object) | 添加name |
堆内存
NULL歧义:
const test=null console.log(typeof(test))//object
for(item in test){
console.log("运行")
}//undefined
看在typeof中的结果null是object,而在循环中,for循环不会执行。所以在此会有一定的歧义,但是基本数据类型和引用数据类型的主要区别就是数据赋值不同和数据存储不同。所以个人感觉null是属于基本数据类型。
7种数据类型详情:
String(字符串):string类型是JavaScript中较为重要的类型,用来表示字符串。
Number(数字):用来表示数字串。主要有整数、小数、NAN等。
boolean(布尔):即布尔类型,该类型有两个值:true
false
null(空):可以通过将变量的值设置为 null 来清空变量
undefined(未定义):表示变量不含有值
symbol(符号):ES6,主要防止命名冲突。
object(对象):对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象。
文字的部分论点,仅为个人观点。