JS的基本类型和引用类型详解

JS有 Number , String , null , undefined , Boolean , Array , Object , Symbol 八种数据类型,而JS的变量,根据指向数据类型的不同,也分为两种类型,一种基本类型,一种引用类型.


 

基本类型

基本的数据类型有:number , string , boolean , null , undefined,Symbol 基 本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值。

值类型:变量的交换等于在一个新的地方按照连锁店的规范标准(统一店面理解为相同的变量内容)新开一个分店,这样新开的店与其它旧店互不相关、各自运营。

1.基本类型的值是不可变的

在从一个变量向另一个变量赋值基本类型时,会在该变量上创建一个新值,然后再把该值复制到为新变量分配的位置上,即基本类型在赋值操作后,两个变量是相互不受影响的

可以看出 y 的值并不随 x 的值改变而改变,虽然把 x 赋值给了 y, 但是 y 的值是独立存在的。还有就是我们不能给基本类型添加属性和方法。

2.基本类型的比较是值的比较

这是当比较的两个值的类型不同的时候==运算符会进行类型转换,但是当两个值的类型相同的时候,即使是==也相当于是===。

3.基本类型的变量是存放在栈区的(栈区指内存里的栈内存)

上面有两个基本类型的变量,它们的存储结构如下图:

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


引用类型

javascript中除了上面的基本类型之外就是引用类型了,也可以说是就是对象了。对象是属性和方法的集合。也就是说引用类型可以拥有属性和方法,属性又可以包含基本类型和引用类型。

引用类型:变量的交换等同于把现有一间店的钥匙(变量引用地址)复制一把给了另外一个老板,此时两个老板同时管理一间店,两个老板的行为都有可能对一间店的运营造成影响。

 

1.引用类型的值是可变

y只进行了一次赋值,理论上它的值已定,但后面通过改写x的值,发现y的值也发生了改变,这正是引用类型的特点。

引用类型的赋值其实是对象保存在栈区地址指针的赋值,因此两个变量指向同一个对象,任何的操作都会相互影响。

引用类型可以拥有属性和方法,并且是可以动态改变的。

 

2.引用类型的比较是引用的比较

引用类型时按引用访问的,换句话说就是比较两个对象的堆内存中的地址是否相同,那很明显,x和y在堆内存中地址是不同的。

 

3.引用类型的值是同时保存在栈内存和堆内存中的对象

引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,也可以说是该对象在堆内存的地址。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值