JS-数据类型(+理解原始值&引用值)

本文介绍了JavaScript中的两种数据类型:原始类型(包括number,string,boolean,undefined,null)和对象类型(如object,数组array,函数function)。原始值存储在栈中,不可变且在比较时按值比较;而引用值存储在堆中,可变,比较时不等于值相等的实例。原始值拷贝传递的是值,引用值拷贝传递的是地址,导致两者可能互相影响。原始值无法拥有属性和方法,但通过包装类可以调用一些方法。
摘要由CSDN通过智能技术生成

JavaScript的数据类型分为两类:原始类型和对象类型。

  1. 原始类型 包括:number,string,boolean,underfine,null
    通常也叫基本数据类型,这些原始值是不可更改的,原始值的比较是值的比较:只有在它们的值相等时它们才相等。
    原始值 存储在栈中(栈数据):
    栈内存和栈内存之间的赋值是拷贝(值可能相同但是两块不同的空间),不在一块内存,互不影响。
    (原始值在栈上存储;原始值之间传递,传递的是值。)
var a = 111 ;
var b = a ;//拷贝一份a里的值赋给b
//这时b里放的值和a里的值是两个没关系值,换句话说就是副本
a = 222;
console.log(b); //打印111;即b的值不会因a的值改变而改变
console.log(a); //打印222
  1. 对象类型:object,(js还定义了两种特殊对象:数组array和函数function)
    通常将对象称为引用类型,引用值是可变的,它们的比较并非值的比较:即使两个对象包含同样的属性及相同的值,它们也是不相等的。
    引用值 存储在堆中(堆数据):
    会先在栈内申请空间(var),是引用值就把内容放到堆里,然后在栈内存里放上堆内存的地址,方便找对应堆里的内容,这样把堆栈连起来。所以!引用值之间的拷贝,拷贝过去的是地址(地址指向的是同一块堆空间),是一个值,会互相影响。
    (引用值在堆上存储, 地址在栈上存储
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值