JavaScript中有5中简单数据类型(也称基本数据类型):undefined,Null,boolean,Number和String。还有一种复杂数据类型——Object,Object本质上是由一组无序的键值对组成的。

鉴于JavaScript是松散类型,我们需要一种手段来检测给定变量的数据类型——typeof。对于一个值使用typeof操作符可能返回以下某个字符串:

ps:typeof是操作符不是函数!

Undefined类型

该类型只有一个值,即undefined,在使用var声明变量但未对其进行初始化,这个值就是undefined。

Null类型

该类型也只有一个值,即null。null表示的是一个空对象指针,这也是为什么使用typeof 检测null时返回“object”的原因。

Boolean类型

该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定是1,false也不一定是0。另外,需要注意的是,Boolean类型的字面值true和false是区分大小写的。True和False等都不是Boolean值,是标识符。虽然JavaScript中Boolean值只有两个,但是所有的类型能与这两个值等价(调用转换函数Boolean()即可)。具体的转换规则入下图:

各种数据类型转换成Boolean规则

Number类型

  1. 浮点数值:该数值必须包含一个小数点,且小数点后面必须至少有一位数字。(ps: var f = .1这种写法是有效的,但不推荐。如果浮点数值表示的是一个整数(1.0),那么该值会被转换成整数。浮点数值最高精度是17位小数,特别需要注意,0.1 0.2 的结果不是0.3,在if条件中判断需注意,if(a b==0.3) 慎用)。

  2. 数值范围:数值的范围为Number.MIN_VALUE~Number.MAX_VALUE,如果某次计算结果超出改范围,将自动被转换成Infinity值。如果是负数就转换-Infinity ,是正数就转换成Infinity。可以使用isFinite()函数检查计算结果是否超出范围。访问Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY可以得到这两个值。

  3. NaN:非数值。NaN有两个奇怪的特点。首先,任何涉及NaN的操作都会返回NaN,其次,NaN与任何值都不相等,包括它自己。可以使用isNaN(p)函数检查返回结果是否是NaN。任何不能被转换成数值的值都会返回true。

  4. 数值转换:Number()、parseInt()和parseFloat()可以将非数值转换成数值。第一个函数可以用于任何数据类型,后面两个是专门把字符串转成数值的。Number()函数的转换规则如下:

javascript五种基本数据类型(带你走进JavaScript世界系列)(1)

Number()函数转换规则

parseInt()和parseFloat()会从第一个非空字符串开始解析,直到解析完所有字符或者遇到非数字的字符。

String类型

用于表示字符序列,可以由“”或''表示。字符串是不可变的,字符串一旦创建,它们的值就不能变。这个是和Java里面的字符串是相似的。

Object类型

对象其实就是一组数据和功能集合。可以通过new操作符创建对象。var o = new Object();这种语法和Java中创建对象是类似的。和Java中Object一样,JavaScript中的Object类型是所有它的实例的基础。

,