数据类型
一、typeof
typeof是操作符而不是函数
二、简单数据类型
1 Undefined
只有一个值:undefined
但与尚未定义的变量不同,直接输出时未定义的会产生错误
若加上 typeof ,则均返回undefined
2 Null
只有一个值:null
直接检查null值可以判断相应的变量是否保存了一个对象的引用
undefined派生自null 二者相等==
二者区别:没有必要将变量的值显式设置为undefined,但应显式设置保存空对象的变量为null
3 Boolean
两个值:true和false
但true不一定为1,false不一定为0
区分大小写,其余为标识符
boolean的转换
boolean | true | false |
---|---|---|
String | 非空字符 | 空字符串 |
Number | 非零数值 | 0和NaN |
Object | 任何对象 | null |
Undefined | 无定义 | undefined |
4 Number
使用IEEE754
可表示十进制、八进制(0开头)、十六进制(0x开头)
4.1 浮点数
浮点数占空间为整形两倍,会及时转换为整数
可用科学记数法表示极大极小值
浮点数计算时精度不足,永远不要测试某个特定的浮点数值(eg. 0.1+0.2)
4.2 数值范围
超出范围:infinity
infinity不参与计算
可用isFinity()判断
4.3 NaN
特殊的数值:指非数值(Not a Number)
任何数除0等于NaN,不会中断影响其他代码执行
- 任何涉及NaN的计算都会返回NaN
- NaN与任何值不相等,包括NaN
可用isNaN()判断
4.4 数值转换
4.4.1 Number()
boolean -> 1 / 0
null -> 0
undefined -> NaN
空字符串 -> 0
包含其他字符的字符串 -> NaN
对象 -> valueOf() -> 若为NaN-> toString()
4.4.2 parseInt()
从第一个非空个字符直至非数值字符
可识别各种进制,可提供第二个参数指明基数
4.4.3 parseFloat()
只解析十进制
5 String
5.1 特点
字符串不可变
要改变某个变量保存的字符串,首先要销毁原来的字符串,再应包含新值的字符串填充该变量
5.2 转换字符串
5.2.1 toString()
null和undefined没有这个方法
数值可传入额外参数指明基数
5.2.2 String()
null -> null
undefined -> undefined
三、引用数据类型Object
对象是一组数据和功能的集合
Object类型是其他所有的实例的基础,其具有的所有属性和方法也存在与所有对象中
- constructor
属性:构造函数 - hasOwnProperty(propertyName)
方法:对象是否存在传入的属性 - isPrototypeOf(object)
- propertyIsEnumberable(propertyName)
方法:能否使用 for-in 枚举 - toLocalString()
- toString()
- valueOf()