JavaScript引用类型与基本类型的区别

基本类型和引用类型

基本类型也可以被称作原始类型
引用类型处理的是对象,引用可以看做指针,指向引用的内存堆栈区,所有引用类型都是Object的实例

基本类型

基本数据类型有5种:

  1. Number
  2. String
  3. null
  4. Boolean
  5. undefined

ES6新增Symbol类型
调用typeof()可以查看相应的类型

typeof() 当类型为引用类型或者null 时会返回object ,因为null代表一个空对象

var str='this is a string'
var newStr=str
newStr='this is a new string'

console.log(str==newStr)//false

上述示例返回false说明 newStrstr 字符串的复制,实际执行过程是创建 newStr 时在堆栈区重新开辟一段空间存放与str相同的值,改变 newStr 的值时是改变 newStr 内存的值,不会影响str的值.

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

其他基本数据类型也同理

引用类型

引用类型也就是对象类型,处理的是对象,object、array、function均是引用类型.一系列构造函数也是引用类型,比如Number、String、Boolean,引用类型比较时是引用地址的比较

var obj={x:1}
var newObj=obj
newObj.x=3
console.log(obj)
//{x: 3}
var arr=[1,2,3]
var newArr=arr
newArr[0]=3
console.log(arr)
//(3) [3, 2, 3]

从上述可以看出引用类型复制过后进行更改,会改变元数据的值,可以看出两者指向同一堆栈区

需要注意的是引用类型的比较是引用的比较,看下面这个例子:

console.log({}=={})
console.log({}==={})

{} 是不等于 {} 的因为两者存在于不同堆栈区,比较引用是不同的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值