在JavaScript中有5种(Undefined、Null、Boolean、Number、String)简单数据类型和1种(Object)复杂数据类型,用var声明变量
可以使用typeof方法来检测数据类型
下面来详细介绍6种数据类型
1.Undefined类型
未初始化与未声明的变量值都为undefined,未声明的变量直接使用会导致报错,但是可以用typeof操作符执行判断是可以执行的,也可以显示的声明一个变量值为undefined,但是这样意义不大。
2.Null类型
null值表示一个空对象的指针(有些早期浏览器执行typeof null会返回object),null派生自undefined,所以用相等符号(==)判断的时候回返回true,如果希望一个变量用来存储对象,应该在声明时显示的声明为null,表面它是一个指针
3.Boolean
boolean值的字面值只有两个,即为‘true’与‘false’,在ECMAScript中所有的值都可以与这两个字面值等价。String类型非空即为true,Number类型任何非零与NaN数字值为true,Object类型任何对象都为true,Undefined只能是false,Boolean是流程控制语句的重要数据类型
4.Number类型
最基础的字面量格式是十进制整数,八进制整数要在前面加0,十六进制要在前面加入0x,八进制字面量在严格模式是无效的,在进行计算时都会被化为十进制数
Number类型的特点
一.浮点数
由于浮点数是整数的两倍,因此ECMAScript会不失时机的将浮点转为整数,浮点数可以用科学计数法表示,例如3.14e8就是3.14x10^8,不要测试某个特定的浮点数值
二.数值范围
当数值超过最大或最小值时就会被转化为±Infinity,可以用isFinity函数来检测是否超过界限
三.NaN
NaN即非数值,任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括自己在内,可以用isNaN来检测是否为非数值。
四.数值转换
有三种将其他类型转为Number的方法,Number、parseInt、parseFloat,Number方法可以将所有的非数值转化为数值,另外两个专门用于把字符串转换为数值。
Number转换规则
-如果是Boolean值,true和false分别转换为1与0
-如果是数值只是简单传入返回
-如果是null,返回0
-如果是undefined返回NaN
-如果是字符串,则将其转化为十进制数,如果其本身是十六进制则转成对应的十进制数值,如果是空的则转化为0,如果包含其他字符则转化为NaN
-如果是对象则调用valueOf()方法,任何依照前面的规则转换返回值。如果转换的结果是NaN,则调用对象的toString方法,然后再次依照前面的规则转换
parseInt与parseFloat(num,type)方法
parseInt在解析八进制字面量的字符串时,ES5(十进制)与ES3(八进制)有分歧,好在它接受的第二个参数可以规定转换的进制格式。parseFloat没有这个问题,功能与parseInt基本一致
5.String类型
String类型由多个16位Unicode字符组成,里面包含了很多字面量例如: 、 、等等,在旧的浏览器中,字符串的长度改变时会销毁原来的字符串创建新的来填充,所以Ie6种拼接字符串时会明显感觉变慢,可以用自带的toString和String函数来将其他类型转化为字符串
6.Object类型
ECMAScript中的对象其实就是一组数据和功能集合,对象可以通过执行New操作符后跟要穿甲的对象类型名称来创建,而创建Object类型的实例并为其添加属性和方法就可以创建自定义对象。
对对象的详细介绍放到后面的随笔里面再继续深入。