JavaScript基本数据类型和引用数据类型详解

数据类型小知识

JavaScript主要数据类型共有7种,有stringnumberbooleanundefinednullsymbolobject。其余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 基本数据类型
   
堆内存中将val1的值赋值给val2
变量名
val1 基本数据类型
val2 基本数据类型
修改val2的值
变量名
val1 基本数据类型
val2 基本数据类型的值被修改


引用数据类型:

引用数据类型的主要特点是赋值方式是传址,并且值存在堆中。(因为引用数据的值的大小无法确定,要根据情况进行特定的配置)

 例如:

const obj1=new Object()
const obj2=val1 
console.log(obj2)//{}

引用数据类型的值,赋值后相互影响。

例如:

obj2.name = "引用数据的值被修改"
console.log(obj1.name)//引用数据的值被修改

 下表展示这种数据类型的赋值过程:

栈内存

 
初始栈内存只有obj1
变量名
val1 引用地址(object)
   
堆内存中将obj1的引用地址赋值给obj2
变量名
val1 引用地址(object)
val2 引用地址(object)
添加obj2的值
变量名
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(对象):对象,除了基本数据类型其他都是对象。数组是对象、函数是对象、正则表达式也是对象。

 

文字的部分论点,仅为个人观点。

posted @ 2021-12-06 13:46  肥晨  阅读(343)  评论(0编辑  收藏  举报