typeof有一个参数,即它要检测的变量或值。
"#ff0000" 变量为"Undefined"类型
"boolean" 变量为"Boolean"类型
"number" 变量为"Number"类型
"string" 变量为"String"类型
"object" 变量为引用类型或"Null"类型
也就是ECMAScript中提供的5种原始类型
1."Undefined"类型
Undefined类型只有一个值就是undefined。当变量声明后没有初始化,这个变量的值就是undefined。如:
2."Null"类型
Null类型也只有一个值就是null。null其实是从undefined派生来的,也因此在ECMAScript中它们被定义为相等的。
3."Number"类型
在ECMAScript中Number既可以表示整数也可以表示浮点数。整数也可以有8进制(0开头)和16进制(0x开头)表示
Number类型还有几个特殊值:Number.MAX_VALUE(可以表示的最大值),Number.MIN_VALUE(可以表示的最小值),当超过最大值是变量将被赋予Number.POSITIVE_INFINITY,当小于最小值时变量将被赋予Number.NEGATIVE_INFINITY。
由于无穷大可以是正数也可以是负数,因此只有一个函数来判断是否越界(isFinit函数)
最后还有一个特殊值NaN,它表示一个非数值(Not a Number)。一般来说只有当其它类型转换成Number类型失败时会被赋予NaN,但是NaN有一个奇特的地方就是它自身并不相等。
4."String"类型
String是唯一一个没有固定大小的原始类型。String保存的为Unicode字符,字符串中每个字符都有一个固定的位置,从下标0开始计算。字符串的值可以用双引号也可以用单引号声明。
其实在ECMAScript中的Boolean,Number和String都是伪对象,这也就是说其实它们都是有属性和方法的。这几个类型都有个toString方法来转换成字符串类型。Number类型的toString方法有两种模式,默认模式和基模式。默认模式下以10进制方式将值转换成字符串。在基模式下可以根据参数转换成2进制,8进制,16进制,基就是要转换成进制的基数。
字符串转换成数字,有两种方法即:parseInt和parseFloat方法,分别对应整数和浮点数。转换失败则返回NaN。parseInt方法也有基模式。
强制类型转换:
Boolean(val) 转换成Boolean类型
Number(val) 转换成Number类型
String(val) 转换成String类型