您的位置:首页 > Web前端 > JavaScript

分析js中基本类型与引用类型的区别

2018-12-16 14:23 197 查看
版权声明:朱砂绛 https://blog.csdn.net/qq_42376054/article/details/85036771

 

1 问题描述

在最近的一段时间内,在学习web前端课程。课程老师讲述到js内容部分时,浅略提到,关于基本数据类型与引用类型的区别,并希望学生自己在课余时间进行了解。虽然该内容是一个基础知识,但容易混淆。

2 问题分析

Js变量有两种不同的数据类型:基本类型、引用类型。基本数据类型包括:undefined,boolean,number,string,null。引用类型包括:object、Array、RegExp、Date、Function、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。

3 解决方案

区别一:操作的方式不同

基本数据类型是按值访问,可真实的去操作变量中实际的值。

引用类型,当复制操作该变量时,操作的是对象的引用;但在为对象添加属性时,操作的是实际的对象。

区别二:值是否可变

对于基本数据类型而言,使用任何方式都不能改变它的值。从下面三行代码中可以清晰的看出,经过toUpperCase(),并没有改变name的值,而是生成的新的字符串。

对于引用类型而言,值可以被改变。从下面可以看出,为Array使用push方法后,在尾部添加了一个值。也就是原本的存入的值被改变了。

区别三:是否能添加属性和方法

基本数据类型不能够为其添加属性及方法。下面的代码可以清晰的看出前面定义的age和method方法并没有起作用,当被调用时依旧为undefined。

引用类型能够为其添加属性及方法,且能够进行删除。下面的代码可以看出当person是一个引用对象时,是可以进行添加操作的,并且生效了。

区别四:变量间的比较方式不同

对于基本数据类型:==与===是有区别的:①不同类型之间(如string与number)先转化同一种类型,再进行值的比较;②===的话如果类型不同,那么直接就是false;③同类型比较,直接进行值得比较。

对于引用类型:==与===没有区别,就直接对其指针地址进行比较。

区别五:存储方式不同

定义几个基本数据类型的变量:var name = ‘jozo’;var city = ‘guangzhou’; var age = 22;它们的存储情况为:

定义几个引用类型的对象:var person1 = {name:’jozo’};var person = {name:’xiaom’};var person3 = {name:‘xiaoq’}它们的存储情况为:

4 总结

Js基本数据类型的变量存放的是基本类型数据的实际值;而引用类型的变量保存对它的引用,也就是指针。基本数据类型与引用类型是两种完全不同的数据类型。也希望这篇博客能够给入门的学者们对两者的区别有一点的帮助。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: