Javascript之基本类型和引用类型
Posted 袁233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript之基本类型和引用类型相关的知识,希望对你有一定的参考价值。
ECMAScript变量可能包含两种不同数据类型的值:基本类型值和引用类型值,基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象。
在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值,基本类型值有:Undefined,Null,Boolean,Number和String。这5种基本数据类型是按值访问的,因为可以操作保存在变量种的实际值
引用类型的值是保存在内存中的对象,javascript不允许直接访问内存中的位置,(不能直接操作对象的内存空间。在操作对象时,实际上是在操作对象的引用而不是实际的对象,故引用类型的值是按引用访问的,其中引用类型有(Object,Array,RegExp,Date,Function,特殊的基本包装类型(String,Number,Boolean)以及单体内置对象(Global,Math)
基本类型
1.Number
Number类型包含整数和浮点数(浮点数数值必须包含一个小数点,且小数点后面至少有一位数字
NaN:非数字类型,两大特点:
- 涉及到的任何关于NaN的操作都会返回NaN
- NaN不等于自己
isNaN()函数用于检查其参数是否是非数字
2.String
字符串是存储字符的变量,由双引号(“”)或者单引号(‘’)表示
字符串有length属性,可以取得字符串的长度
字符串转换:转型函数String(),适用于任何数据类型(null,undefined转换后为null和undefined)
toString方法(null,undefined不适用)
3.Boolean
只有两个值,true和false
4.Undefined
只有一个值,即undefined值,使用var声明了变量,但未给变量初始化值,那么这个变量的值就是undefined
5Null
只有一个值的数据类型,null值表示一个空对象的指针,使用typeof操作符检测null值会返回‘object’
6常见的引用类型
Object:带有属性和方法的特殊数据类型
Array:使用单独的变量名来存储一系列的值
7.基本类型和引用类型的区别
基本类型的变量是存放在栈区的(栈区是指内存里的栈内存)
引用类型的值是同时保存在栈内存和堆内存中的对象;
基本类型的比较是值的比较
引用类型的比较是引用的比较
扩展
1.Null和Undefined的区别
Null和Undefined基本同义,只有一些细微差异,Null表示“没有对象”,即该处不应该有值
Undefined表示缺少值,此处应该有值,但是还没有定义:
- 变量被声明了,但没有赋值时,就等于Undefined
- 调用函数时,应提供的参数没有提供,该参数为Undefined
- 对象没有赋值的属性,该属性为undefined
- 函数没有返回值时,默认返回undefined
2.什么是栈内存,堆内存,两者的区别
栈内存:由程序自动向操作系统申请分配以及回收,速度快,使用方便,但程序员无法控制,若分配失败,则提示栈溢出错误,注意:const局部变量也存储在栈区内,栈区向地址减小的方向增长
堆内存:程序员向os申请一块内存,当系统收到程序的申请时,会遍历一个记录空闲内存地址的链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,分配的速度较慢,地址不连续,容易碎片化,故由程序员申请,同时必须要程序员销毁
以上是关于Javascript之基本类型和引用类型的主要内容,如果未能解决你的问题,请参考以下文章