跳到主要内容

数据类型

一、常见数据类型

类型类型名特征举例说明
string字符型""、''"hello"只要是被引号包裹的都是字符
number数字型0123.1415926常见的各类数字
boolean布尔值true、falsetrue只有两个值,表示真假
array数组[][1,2,3]用方括号包起来,逗号隔开的数据
object对象{}{key:value}用大括号包起来,里面是键值对的形式,逗号隔开
function函数functionfunction test() = {}函数方法
undefined未赋值undefinedundefined表示被声明了,但是没有被赋值
nullnull表示空表示为空
NaN意外的数字NaN表示意外转换生成的数值型数据

二、JavaScript 的三大特殊值 NaN、undefined、null

NaN:不是一个数字的数值型数据
代表意外或非法转化的数字
NaN和任何数据都不相等,甚至不等于自己
//认识isNaN()函数,该函数判断括号内的值是否是NaN,是就返回true,不是就返回false
console.log(isNaN(c));
null:空
类型是对象,表示空nall。但不是空对象
undefined:未定义
nullundefined隐式类型转换后可能相等(不严格比较)
因为都转为布尔值,两者在布尔值中都为false

3.如何检测数据类型:

使用关键字:typeof

//在打印内容前加上关键字typeof,打印出来的就是当前内容的数据类型
condole.log(typeof '123') //string
condole.log(typeof 123) //number

4.数据保存在哪?

保存在变量中:变量比作仓库。变量需要声明之后才能使用

五、数据类型转换

数据类型转换的类型分类:

1.隐式数据转换

情况(场景):
1.在算数运算中(通过算数运算符转换)
转换的规则:
+号只要两边出现一个字符,另一个也会转换成字符
-*%/直接都作为数值运算(可将某srting类型数字*1转换为number类型数字)
2.if等判断语句中(if语句括号中的值)
数字:非0true0false
字符:非空为true,空为false
对象:在任何时候都为true
数组:在任何时候都为true,数组也是对象的一种
函数:在任何时候都为true,函数也是特殊的对象
NaN:为false
undefined:为false
null:为false

2.显式转换

字符转数值

Tip:我们想做数学运算的时候,应该先对所有的数据类型进行统一(统一成数字格式),这个时候我们就该用到数据类型的转换。

(1) 普通字符转换
parseInt();括号里就是需要转换的数据(可用于小数取整)
数字可以转换,非数字停止。
从左向右转换,能转就转,不能转就停止,后面的不再转换。
若第一个就不能转,则显示NaN
能用在转换整数,认为小数点是非数字。
例:
parseInt("123abc");//123
a做为第一个不是数字的字符;返回a之前的所有值,则该方法返回123
parseInt("abc123");//NaN
a做为第一个不是数字的字符,且处在字符串的第一位,则判定该字符串无法转换为数字返回NaN

parseFloat();
数字可以转换,非数字停止
从左向右转换,能转就转,不能转就停止,后面的不再转换。
若第一个就不能转,则显示NaN
可以识别小数点
例:
parseFloat(123.456");返回123.456
parseFloat(123.4a56");返回123.4
parseFloat(123.00");返回123
parseFloat(123.0a56");返回123
(2) 特殊字符转换
Math.round();
严格转换,不允许出现任何非数字,若有非数字直接显示NaN
可以识别小数点,但会四舍五入取整。小数点后的被四舍五入
实质是取最近的整数,能在正数有四舍五入的效果。
若为负数;例:Math.round(-3.6);//-4(数字进一反而变小了)
Number()//为强制数据类型转换 将string类型的数字转为number类型的数字
严格转换,不允许出现任何非数字,若有非数字直接显示NaN
可以识别小数点
Number("hello world"); //NaN
Number("123456"); //123456

数值转字符

toString();
直接转换:相当于直接给数值添加个引号
例:
var num = 123;
num.toString();//"123" 转换成字符串
toFixed();
保留N位小数的转换(转换后变成字符)
直接转换,可以保留N位小数
例:
var a = 3.1415
a.toFixed(2);//"3.14" a转换为字符 ,保留两位小数,四舍五入
字符多位,小数可以补0
a.toFixed(6);//"3.141500"//字符型,后面可以补0
Tip:而数值多位,小数没办法补0,计算机认为是无意义的,会自动省略。