JavaScript的数据类型可分为基本数据类型和引用数据类型:
基本数据类型:undefined、null、Boolean、Number、string、symbol、BitInt
引用数据类型:Object、Function、Array和Date
基本数据类型
1、Undefined
Undefined只有一个字面值:undefined,代表的是一个变量不存在。
• 只声明却未初始化的变量,会出现“undefined”;
• 获取一个不存在的对象属性,返回“undefined”;
• 函数没有明确的返回值,但却调用了返回值,这时会返回“undefined”;
• 函数定义多个形参,但是调用时传参数量少于形参数量,那么没有匹配上的形参就为“undefined”;
2、Null
Null也是只有一个字面值,表示是一个空指针对象,因为是一个对象,所有使用typeof来检测null的数据类型的时候会返回“object”。
• 如果声明变量为了保存后面的某个值的时候,应该在声明该变量的时候赋值为“null”;
• JavaScript在获取DOM元素的时候,如果没有指定元素对象,则会返回“null”;
• 正则在捕获的时候,没有捕获到结果,也会返回null;
undefined和null在转为Boolean值的时候,都是false。
Undefined是派生自Null类型的,所以在非严格相等的情况下,这两者是相等的:
undefined == null ; // true
null是JavaScript的关键字,undefined是JavaScript中的一个全局变量,是挂载window对象上的一个变量。
3、Boolean
• 字符串””或者’’会转为false;
• 任何非空字符串转为true,包括” “;
• 0和NaN会转为false,除此之外任何的数字都转为true
• Object为null时,会转为false,其余都可以转为true,包含{}
• Undefined类型只有一个undefined值,会转换为false
4、Number
• true转为1,false转为0
• Null转为0
• undefined转为NaN
• string转为Number类型:
• 如果字符串只包含数字,则会换成十进制数,如果前面含有0,会直接忽略掉;浮点数也一样
• 如果字符串包含有效的十六进制数,会转换为十进制数
• 空字符串会转为0
• 其他字符会转为NaN
• Object转为Number类型,会先调用valueOf方法返回键值对的value值,再次进行转换,如果值是NaN,则调用toString()方法返回值重新进行转换。
转换为Number类型的三个方法:Number()、parseInt()、parseFloat()
1、Number(),将任何类型转换为Number类型,用以上的规则进行转换
2、parseInt(),用来解析一个字符串, 返回指定基数对应的整数值,但是如果该字符串 不能转换为Number类型的,就会返回NaN
3、parseFloat(),解析一个字符串,返回一个浮点数
Number()函数转换的是传入的整个值,并不是像parseInt()函数和parseFloat()函数一样会从首位开始匹配符合条件的值。如果整个值不能被完整转换,则会返回“NaN”。
isNaN()函数在判断是否为NaN时,需要先进行数据类型转换,只有在无法转换为数字时才会返回“true”;Number.isNaN()函数在判断是否为NaN时,只需要判断传入的值是否为NaN,并不会进行数据类型转换。
5、String
6、Symbol
7、BigInt
应用数据类型(Object)
- Array数组对象
- Function函数对象
- Date内置日期对象
- Math数学对象
- RegExp正则对象
基础数据类型是存储在栈内存,被引用或者拷贝的时候,会在内存创建完全相等的变量。
引用数据类型是存储在堆内存,存储的一个地址,被引用或者拷贝的时候,会指向同一个地址。