面试资料积累JS-全部数据类型,基本数据类型和引用数据类型的区别

一、javascript全部数据类型

1.内置类型
1.空值null
2.未定义 undefind
3.布尔值boolean
4.数字Number
5.字符串String
6. 对象Object
7. 符号symbol
8. 长整型 Bigint

基本数据类型

undefind, null,number, boolean, string, symbol

基本数据类型是按值访问的。就是说我们可以操作保存在变量中的实际值。

  1. 基本数据类型的值是不可变的。
  2. 基本数据类型不可以添加属性和方法
  3. 基本数据类型的赋值是简单赋值
  4. 基本数据类型的比较是值的比较
  5. 基本数据类型是存放在栈区的

2.引用类型
javascript中除了上面的基本类型之外就是引用类型了,也可以说就是对象了,比如:
Object, Array, Function, Data等
1.引用类型的值是可以变的。
2.引用类型可以添加属性和方法
3.引用类型的赋值是对象引用
4.引用类型的比较是引用的比较
5.引用类型是同时存在栈区和堆区的。
二。基本数据类型和引用数据类型的区别
1.声明变量时不同的内存分配

原始值:
存储栈stack中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。这是因为这些原始类型占据的空间是固定的。所以可以装饰他们存储在较小的内存区域栈中。这样存储便于迅速查寻变量的值
引用值 :存储在堆heap中的对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存地址。这是因为引用值的大小会改变,所以不能把它放在栈中,否则会降低变量查寻的速度。相反,放在变量的栈空间中值是把该对象存储在堆中的地址。地址的大小是固定的,所以把它存储在栈中对变量性能无任何负面影响。
2.不同的内存分配机制也带来了不同的访问机制。
在javascript中是不允许直接访问保存在堆内存中的对象的,所以在访问一个对象时,首先得到的是这个对象在堆内存中的地址,然后再按照这个地址去获取得这个对象中的值,这就是传说中的按引用访问。而原始类型的值是可以直接访问到的。
3.复制变量时的不同
原始值:在将一个保存着原始值的变量复制给另一个变量时,会交原始值的副本赋值给新变量,此后这两个变量是完全独立的。他们只是拥有相同的value而已。
引用值:在将一个保存着对象内存地址的变量复制给另一个变量时,会把这个内存地址赋值给新变量,也就是说这两个变量都指向了堆内存中的同一个对象,他们中任何一个胜出的改变都会反映到另一个身上。多了一个指针。
4.
参数传递的不同(指导实参复制给行参的过程)

首先我们应该明确一点:ECMAScript中所有的函数的参数都是按值来传递的。
但是为什么涉及到原始类型与引用类型的值时仍然有区别呢?因为内存分配时的差别
原始值:只是把变量里的值 传递给参数,之后参数和这个变量互不影响
引用值:对象变量它里面的值是这个对象在堆内存中的内存地址,这一点你要时刻铭记在心。因此它传递的值也就是这个内存地址。这也就是为什么函数内部对这个参数的修改会体现在外部的原因,因为它们都指向同一个对象 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值