JS 的数据类型分为两类:原始类型( Number,String,Boolean,Null,Undefined )和对象类型( 混合数据类型-Object)
1.数字(Number)
- 整型直接量:用一个数字序列表示的一个十进制整数(js同样也能识别十六进制值)
- 浮点型直接量: 有整数部分,小数点和小数部分组成
3.14
.3333
6.02e23 // 6.02*10^23
1.4738223E-32 // 1.4738223*10^-32
- 非数字值(NaN)
- 无穷大除以无穷大(Infinity- 正无穷大),给任意负数作开方运算或者算术运算符与不是数字或无法为数字的操作数一起使用时都将返回NaN
10 * '我是文字' //NaN
10 + '我是文字' //'10我是文字' -类型转换引起的
- NaN不等于自身,也与任何值都不相等
isNaN() //如果参数时NaN或者是一个非数字值,则返回true
isFinite() //如果参数不是NaN Infinity或者-Infinity的时候返回true
- 关于浮点数计算会产生舍入误差问题,其他有些编程语言也会出现类似情况。
var num1 = 0.1;
var num2 = 0.2;
console.log(num1 + num2); //0.30000000000000004
数值转换:
Number(): 无法转换为数字时,那么 Number() 函数返回 NaN
parseInt():将值转换为整型;
parseFloat():将值转换为浮点型。
2.字符串(String)
- 是由单引号或者双引号括起来的字符序列
- 字符串可以通过 length 获取长度
var lang = "mylength"
console.log(lang.length) //8
- 字符串都是固定不变的,类似replace()和toUpperCase()的方法都返回新的字符串,原字符串本身不变
var lang = "mylength"
lang.replace('my','you') //"youlength"
console.log(lang) // "mylength"
字符串转换:
String():适用于任何数据类型(null,undefined 转换后为null和undefined);
toString():null,undefined没有toString()方法。
3.布尔值(Boolean)
-
这个类型只有两个值true和false
布尔值转换:
Boolean():
undefined null 0 -0 NaN " " //这些值通过Boolean()转换都是false,其他所有值包括函数都会转成true
4.null
- 常用来描述空值,对null执行typeof运算,结果返回字符串"object",也就是说null是一个特殊的对象值
- 它可以表示数字,字符串和对象是"无值"的
- 在运用中如果定义了一个变量,在后面的开发中想把这个变量当作一个对象来用,那么在定义时可将其初始化为null
- null和undefined在双等于的时候返回值为 true
5.undefined
- 表示变量没有初始化
var my;
console.log(my) // undefined
6.对象(Object )
-
对象:
- js对象是一种复合值:它是属性或已命名值的集合
- 通过"."符号来引用属性值
- 当属性值是一个函数的时候,称其为方法,通过o.m()来调用
- 全局对象:
windoow对象充当全局对象
在代码的最顶级——不在任何函数内js代码,可以使用js关键字this来引用全局对象
1. 全局属性:比如undefined,Infinity和NaN
2. 全局函数:比如isNaN(),parseInt(),eval()
3. 构造函数:比如Date(),String(),RegExP(),Object()和Array()
4. 全局对象:比如Math和JSON5 包装对象
-
可通过String(),Number()或Boolean()构造函数来显示创建包装函数
-
null和undefined没有包装对象
-
在“==”,原始值和其包装对象视为相等
-
在"==="就视为不等