JavaScript中值类型和引用类型的区别

举报
花溪 发表于 2020/08/04 14:16:42 2020/08/04
【摘要】 JavaScript中值类型和引用类型的区别

在JavaScript中值类型和引用类型的区别

一、存储方式不一样

  • 基本数据类型

        变量存储的是简单的数据段,存储的是具体的值,是轻量级的数据存储方式

  • 引用类型

        引用类型的值,可以由多个值构成的对象,引用类型的变量存储的是对象引用地址。引用类型是重量的数据存储方式,分配在堆内存,频繁创建对象有损性能。

引用类型(N多) Object、Array、Date、Function、……

二、动态属性不一样

  • 引用类型能动态添加属性

     var person=new Object();
     person.name="jack";
     person.age=20;
     console.log("姓名:%s,年龄:%d",person.name,person.age);

    结果: 姓名:jack  年龄:20

    

    说明

    属性动态添加成功

  • 值类型不能添加

 

 var person="";
 person.name="jack";
 person.age=20;
 console.log("姓名:%s,年龄:%d",person.name,person.age);

 结果: 姓名:undefined  年龄:NaN


  说明:属性动态添加失败,说明这是值类型的变量。

 

三、赋值的方式不一样

  • 值类型,拷贝变量的内容

    var num=10;

    var num2=num;//创建新的空间,拷贝num的值到num2。

    这个两个变量的内容是互不影响的,num2的内容是num的一个副本。类似操作系统的复件

    var num=10;
    var num2=num;
    num2=100;//并不会影响到num的值
    console.log("num=%d  num2=%d",num,num2);

结果 num=10  num2=100


 

  • 引用类型,拷贝引用地址

    var person1=new Object();
    person1.age=18;
    var person2=person1;//拷贝引用地址,给变量person2,于是同时指向一个对象
    person2.age=30;//事实上也是person1指向的那个对象
    console.log("person1.age=%d   person2.age=%d",person1.age,person2.age);

结果:person1.age=30  person2.age=30


说明

两个变量都指向同一个对象,对象就是希望被变量引用的,引用的数量也是没有限制的。

image.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。