JS中基本类型和引用类型分别指的的是什么?有何区别?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jnshu_it/article/details/84669133

这里是修真院前端小课堂,每篇分享文从

【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】

八个方面深度解析前端知识/技能,本篇分享的是:

【JS中基本类型和引用类型分别指的的是什么?有何区别?    】

1.背景介绍

基本数据类型:按值访问,可操作保存在变量中的实际的值。基本类型值指的是简单的数据段。

基本数据类型有这五种:Undefined、Null、String、Number、Boolean。

引用类型:当复制保存着对象的某个变量时,操作的是对象的引用,但在为对象添加属性时,操作的是实际的对象。引用类型值指那些可能为多个值构成的对象。引用类型值指那些可能为多个值构成的对象。

扫描二维码关注公众号,回复: 4315771 查看本文章

引用类型有这几种:object、Array、RegExp、Date、Function、特殊的基本包装类型(String、Number、Boolean)以及单体内置对象(Global、Math)。

2.知识剖析

1.Number

Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字)两种值。

NaN:非数字类型。两大特点:1.涉及到的 任何关于NaN的操作,都会返回NaN。2. NaN不等于自身。

isNaN() 函数用于检查其参数是否是非数字值

2.String

字符串是存储字符的变量,由双引号(" ")或单引号(' ')表示

字符串有length属性。可以取得字符串的长度。

字符串转换:转型函数String(),适用于任何数据类型(null,undefined 转换后为null和undefined);toString()方法(null,undefined没有toString()方法)。

3.Boolean

只有两个值,true和false;在运算中true=1,false=0。

4.Undefined

只有一个值,即undefined值。使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined。

5.Null

也是只有一个值的数据类型,null值表示一个空对象指针,使用typeof操作符检测null值会返回"object"

6.常见的引用类型

Object类型:带有属性和方法的特殊数据类型。

Array:是使用单独的变量名来存储一系列的值。

Function:函数类型在JavaScript中也是对象。

7.基本类型和引用类型的区别

基本类型的变量是存放在栈区的(栈区指内存里的栈内存);

引用类型的值是同时保存在栈内存和堆内存中的对象;

基本类型的比较是值的比较;

引用类型的比较是引用的比较;

3.常见问题

见2.知识剖析

4.解决方案

见2.知识剖析

5.编码实战

<script>

var name = '内门弟子';

var num = 1000;

var newName = name;

var newNum = num;

// console.log(newName);

// console.log(newNum);

name = '修仙弟子';

num = 500;

console.log(newName);

console.log(newNum);


 

var obj = [1, 2, '三'];

// var obj = {name:'内门弟子' ,num : 1000};

var newObj = obj;

obj[0] = 4;

console.log(obj);

console.log(newObj);

</script>


 

6.扩展思考

见2.知识剖析

7.参考文献

w3school   

脚本之家

8.更多讨论

1.Null和Undefined的区别?

null和undefined基本同义,只有一些细微的差别。

null表示“没有对象”,即该处不应该有值。

(1) 作为函数的参数,表示该函数的参数不是对象。

(2) 作为对象原型链的终点。

undefined表示缺少值,此处应该有值,但是还没有定义。

(1)变量被声明了,但没有赋值时,就等于undefined。

(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

2.基本数据类型和引用数据类型的区别?

在内存中的储存方式不同

3.什么是栈内存,什么是堆内存,两者有什么区别?

栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制。若分配失败,则提示栈溢出错误。注意,const局部变量也储存在栈区内,栈区向地址减小的方向增长。

堆内存:程序员向操作系统申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。分配的速度较慢,地址不连续,容易碎片化。此外,由程序员申请,同时也必须由程序员负责销毁,否则则导致内存泄露。

关于堆和栈区别的比喻:

堆和栈的区别可以引用一位前辈的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

9.鸣谢

感谢周能、何岳师兄,在两位师兄的帮助下顺利结束了本节小课堂,感谢!

PPT链接 视频链接

更多内容,可以加入IT交流群565734203与大家一起讨论交流

这里是技能树·IT修真院:https://www.jnshu.com,初学者转行到互联网的聚集地

猜你喜欢

转载自blog.csdn.net/jnshu_it/article/details/84669133