JavaScript笔记3 基本类型和引用类型

基本类型和引用类型

【引用类型】:函数,对象,数组等
引用类型共用同一个空间(内存地址),改变一个值会改变另一个值
引用类型存储在栈和堆中,栈中存储的不是值而是内存地址,堆中存储的还是才是值,所以改变同一个内存地址的对象,会改变所有指向这个内存地址的所有变量
举例:

var a=[1,2,4]
var b=a
b.push(5)
console.log(a)
//此时可以看到控制台输出的a为Array(4),点开后发现数组中有4个值。

和下列情况注意区分

var a=[1,2,4]
var b=[1,2,4]
b.push(5)
console.log(a)
//此时可以看到控制台输出的a为Array(3),并没有变化,因为a和b只是值一样,内存地址不同,并不是引用。

同样的情况在定义字符串时也会有所体现

var a='abc'
var b='abc'
var c=new String('abc')
var d=new String('abc')
console.log(a===b)
//true
console.log(c===d)
//false
console.log(a==c)
//true
console.log(a===c)
//false

这里还要说明一下== 和 ===的区别,由于js中存在类型转换(自动的),==是宽松的比较,===是严格的比较(不会进行自动转换类型)。

【基本类型】:其他类型
基本类型相互独立,互相不受影响,存储在【栈】中,而【栈】存储的是值,所以改变某个值不会影响其他的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值