ECMAScript 原始值和引用值

ES中,变量可以存在两种类型的值,即原始值和引用值

原始值
存储在栈中的简单数据段,也就是说他们的值
直接存储在变量的访问的位置

引用值
存储在堆(heap)中的对象,也就是说存储在变量出的是一个指针

原始类型:
underfined null boolean number string
这五个是原始类型

这五个原始类型占据的空间是固定的,存储在较小的内存区域 栈中,便于迅速查询
(这里string有点奇怪,在许多语言中,字符串被看作引用类型,但在ES的语法规范中,他被看作了原始类型,但字符串应该是可以变长的)

引用类型:
除了 原始类型都是引用类型
当然原始类型也有对应的引用类型
可以用 let num = new Number() 创建对象
引用类型的存储空间将从堆分配,由于引用值的大小会改变,所以不能把他放在栈中,否则会降低查找变量的速度。而放在栈中的是变量的地址,地址是固定长度的,所以存储在栈中没有任何负面性能的影响

在这里插入图片描述

由这副图可以看出
数据类型 string number underfined boolean null 都是原始类型
数据类型 object function 是引用类型

而不同类型造成的结果不一样
在chrome浏览器控制台的代码演示
在这里插入图片描述

  • 定义了 a = b 修改b的值a的值不会受到影响 (number,原始数据类型)
  • 定义了 d = c 修改d的值c的值受影响了(JSON,对象,不是原始数据类型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值