JavaScript中值类型和引用类型的区别
【摘要】 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
说明
两个变量都指向同一个对象,对象就是希望被变量引用的,引用的数量也是没有限制的。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)