JS有哪些基本数据类型以及区别

可以描述:总共8种。

基本数据类型:String、Number、Boolean、Null、Undefined、Symbol(代表创建之后独一无二并且不可变的数据类型||es6新增)、bigInt

引用数据类型:Object、Function、Array、…(归结为Object这一类)

基本数据类型与引用数据类型的区别:

  1. 声明变量时的存储分配不同。

    基本数据类型存储在栈stack中,它们的值直接存储在 变量访问的位置(这是因为这些基本数据类型占据的空间是固定的,所以可以将它们存储在较小的内存区域-栈中,这样存储便于迅速查寻变量的值)。

    引用数据类型存储在堆heap中,堆是动态分配变量的内存空间。存储在变量处的值是一个指针(point)指向存储对象的内存地址。(这是因为:引用值的大小会改变,放在栈中会降低变量查寻的速度)

  2. 不同的内存分配机制也带来了不同的访问机制。

    引用数据类型不可以直接访问堆内存空间的位置以及直接操作堆内存空间。只能操作对象在栈内存中的引用地址,再按照这个地址去获得这个对象中的值。“按引用访问

    基本数据类型是可以直接访问到的,而引用数据类型访问引用地址,根据引用地址找到堆中的实体。

  3. 赋值变量时的不同。

    基本数据类型:var a=1,var b=a;将原始值的副本赋值给新的变量。此后两变量互相独立。改变其一不会影响到其它。“传值”,暂时拥有相同的value而已。

    引用数据类型:var obj={name:‘zhangsan’},var obj1=obj,将引用地址赋值给新的变量,但是两个引用地址指向的是同一个堆内存空间的位置,并没有开辟新的堆内存空间;所以但凡作出其一改变,还是会影响到其它的。“传址”

  4. 参数传递的不同(把实参复制给形参的过程)

    1. 原始值:只是把变量的值传递给参数,之后参数与该变量互不影响。
    2. 引用值:对象变量它里面的值是这个对象在堆内存中的内存地址!!时刻铭记!!正因为这,函数内部对这个参数的修改会体现在外部也是这个原因,因为它们指向同一个对象。

在这里插入图片描述

输出:[1,2,3,4,5]、1、6、1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值