前端基础(十二、JS 引用数据类型)

前言

JS分为两种数据类型:

  • 基本数据类型
    基本数据类型在上一篇文章中已经介绍,其包括:
    • Number
    • String
    • Boolean
    • Null
    • Undefined
    • Symbol(ES6中的语法,后续文章中会介绍)
  • 引用数据类型
    引用数据类型即Object,在JS中,所有除了基本数据类型外的数据类型都属于Object,例如数组、函数方法、对象等。

基本数据类型和引用数据类型的主要区别

声明变量时分配的内存不同

  • 基本数据类型声明变量时分配的是栈内存,它声明的变量存在栈中。
        //基本数据类型存在栈中
        var a = 10;
        var b = a;
        var b = 20;
        console.log(a);
        console.log(b);
        //输出10 20

运行如上代码段,输出10 20。

初始的栈内只有一个a = 10,定义变量b,将a的值复制过来,b的值为10,此时b保存的只是a的一个复制,当为b赋新的值20后,b在栈中保存的值就会由10变为20,而a未做改变依然是10。
栈中的变化情况如图所示:
栈内存

  • 引用数据类型声明变量时分配的是堆内存,它声明的变量存在堆中。
        //引用数据类型存在堆中
        var obj1 = new Object();
        var obj2 = obj1;
        obj2.name = "nana";
        console.log(obj1.name);
        //输出 nana

引用数据类型保存的是对象在堆内存中的引用地址,因此,obj1复制给obj2的实际上是obj1的引用地址,复制后,obj1和obj2指向同一个堆内存对象,引用地址变成同一个地址,所以为obj2添加新的name属性时,obj1也能访问到name属性,故obj1也会输出nana。

引用数据类型的赋值过程如下所示:
栈内存

(๑′ᴗ‵๑)爱你❤

以上为本萌新个人总结,如有不当之处望指正,有问题可以联系
邮箱:yuna_03@163.com或
QQ:2635591841

更于2021.2.7

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值