JavaScript(基础类型与引用类型)

基础类型和引用类型

数据类型:number/string/boolean/undefined/object/function

数据类型:number/string/boolean/undefined/null/{}/[]/function

在js中没有null类型,没有数组类型,数据类型:object类型

根据每种数据类型存储方式和赋值方式的不同,将所有数据类型分成2大类:

1.基础类型:number/string/boolean/undefined/null

2.引用类型:{}/[]/function

基础类型

var a = 10

在内存中开辟空间a,给其中放入数据10

我们在内存中存储数据,内存空间会被划分成多个区域,每个区域各司其职,例如,内存会专门划分一片区域用来运行我们的系统,内存会划分专门的区域用来执行js代码。

存储数据,也是会在内存中有专门的一片空间,用来存储数据,这个空间的名称叫做 栈

从存储的角度来看待不同的数据类型:

基础数据类型会将数据存储在栈中,引用数据类型会将数据存储在堆中,将堆的地址存储在栈中

引用类型

var arr = ['a', 'b', 'c']

会在栈中开辟空间arr,将数据存放在另一个内存空间 堆 中,堆中存放数据的内存地址,放在栈中arr的空间

通过赋值角度来看待不同的数据类型:

// 基础类型的赋值,是将其中一个值复制到另一个变量容器中,引用类型的赋值是将一个栈中的内存地址复制一份放到另一个变量容器中,改变其中一个的值,另一个也会发生改变

// 基础类型:var a = 10

// var b = a // 将a中的值复制一份放到了b中,复制以后,有两个独立的值

// a = 20 // 改变其中一个,另一个不会发生改变的

// console.log(b); // 10

// 引用类型: var arr = ['a', 'b', 'c']

// var brr = arr // 将arr在栈中存储的地址复制了一份给brr,此时arr和brr共享同一个值的内存地址

// arr[1] = 'd' // 将arr存储的地址中的值的b改成d

// 没有改变arr在栈中存储的内存地址

// console.log(brr); // brr也就跟着发生了改变

// 注意事项:

// var arr = ['a', 'b', 'c']

// var brr = arr

// arr = [1,2,3] // 重新给arr赋值,就会将arr在栈中存储的内存地址改掉

// console.log(brr);

在进行全等比较的时候:

基础类型先比较类型是否相同,如果类型相同了,再比较值是否相等;引用类型,会比较内存地址是否相同

基础类型的全等比较 - 比较类型和值

var a = 1

var b = 1

console.log( a === b ); // true

引用类型的全等比较:

var arr = [1,2,3]

var brr = [1,2,3]

console.log(arr === brr); // false

引用类型在进行全等比较的时候,在比较栈中存储的内存地址是否相同

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值