常用的数据类型有哪些?简单数据类型与复杂数据类型之间的区别?

接下来由我给大家介绍一下JavaScript中的数据类型都有哪些?

简单数据类型:

分为:number、string、null、undfined、boolean、symbol (es6)、bigInt(es10)

复杂数据类型:

分为:object、array、function

那么肯定有的小伙伴要问了,简单数据类型和复杂数据类型有什么区别呢?

简单数据类型举例:

var a = 1;
var b = a;
b = 2;
console.log(a)   结果为:1

首先,在JS中我们要知道栈和堆的概念:

        简单数据类型都是存储在栈里面的,而复杂数据类型都是存储在堆里面的。

        首先我们声明了一个 a = 1;我们在栈里面声明了一个a=1,又声明了一个b=a,再然后又给b重新赋值为2,那么这个时候a是不是没有变,所以我们控制台输出结果为1。

复杂数据类型举例:

var obj = {
    a:1,
}
var newObj = obj;
newObj.a = 2;
console.log(newObj.a);

         首先我们声明了一个obj对象,里面的属性a的属性值为1,然后我们又将这个obj对象赋值给了一个新的newObj对象,我们知道复杂数据类型的指针指向同一地址,所以说旧的obj对象和新的newObj对象指向的数据为同一地址,并且为同一数据,当我们修改这两个任意一个对象里面的属性的属性值的时候,一改全改,举个例子,我们共同拥有一个亿(对象),但是有一天小偷来了,偷走了,那我们的钱(也就是复杂类型的数据)被偷了(也就是被修改了),所以说复杂数据类型的数据一改全改。当修改两个对象里面的属性值时,指针指向同一地址的数据,所以newObj=2,控制台输出为2。

总结:

简单数据类型存放在栈里面

复杂数据类型存放于堆里面

简单数据类型是深复制,赋值的是值,互相不会影响。

复杂数据类型是浅复制,赋值的是地址,一个改变,全部改变,因为他们的指针指向同一地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值